models.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #coding=utf-8
  2. import json
  3. import datetime
  4. from django.db import models
  5. from django.utils import timezone
  6. from django.conf import settings
  7. from apps.exceptions import CustomError
  8. from libs.utils import strftime, strfdate
  9. from managers import OptionManager
  10. class Option(models.Model):
  11. PAYMENT_MODE = 0
  12. MATERIAL_MODE = 1
  13. CONSUMABLE_MODE = 2
  14. GOODS_MODE = 3
  15. QUALITY_REQUEST = 4
  16. BANK_ACCOUNT = 5
  17. TYPE_CHOICES = (
  18. (PAYMENT_MODE, u'付款方式'),
  19. (MATERIAL_MODE, u'原料类别'),
  20. (CONSUMABLE_MODE, u'耗材类别'),
  21. (GOODS_MODE, u'成品类别'),
  22. (QUALITY_REQUEST, u'质量要求'),
  23. (BANK_ACCOUNT, u'银行账户'),
  24. )
  25. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")
  26. name = models.CharField(max_length=100, verbose_name=u"名称")
  27. notes = models.CharField(max_length=500, verbose_name=u"备注",blank=True,null=True)
  28. enabled = models.BooleanField(verbose_name=u"在用", default=True)
  29. objects = OptionManager()
  30. @staticmethod
  31. def getTypeText(type):
  32. return Option.TYPE_CHOICES[type][1]
  33. @staticmethod
  34. def getById(id):
  35. try:
  36. id = int(id)
  37. except:
  38. raise CustomError(u'无效的自定义项ID')
  39. instance = Option.objects.filter(pk=id).first()
  40. if not instance:
  41. raise CustomError(u'未找到相应的自定义项')
  42. return instance
  43. @staticmethod
  44. def getByName(name, type):
  45. option = Option.objects.filter(name=name,type=type).first()
  46. if not option:
  47. raise CustomError(u'未找到[%s]为[%s]的自定义项' % (Option.getTypeText(type),name))
  48. return option
  49. class Meta:
  50. db_table = "system_option"
  51. verbose_name = u"自定义项管理"
  52. ordering = ('-id', )
  53. index_together = (
  54. 'name',
  55. )
  56. default_permissions = ()
  57. permissions = (
  58. ("view_option", u"浏览"),
  59. ("add_option", u"添加"),
  60. ("delete_option", u"删除"),
  61. )
  62. class BizLogManager(models.Manager):
  63. def addnew(self, user, type, description, data=None):
  64. def default(o):
  65. if isinstance(o, datetime.datetime):
  66. return strftime(o)
  67. elif isinstance(o, datetime.date):
  68. return strfdate(o)
  69. row = self.model(user=user, type=type, description=description, create_time=timezone.now())
  70. if data:
  71. row.data = json.dumps(data, default=default)
  72. row.save()
  73. return row
  74. class BizLog(models.Model):
  75. INSERT = 1
  76. UPDATE = 2
  77. DELETE = 3
  78. CHECK = 4
  79. EXPORT = 5
  80. PRINT = 6
  81. IMPORT = 7
  82. TYPE_CHOICES = (
  83. (INSERT, u'添加'),
  84. (UPDATE, u'修改'),
  85. (DELETE, u'删除'),
  86. (CHECK, u'审核'),
  87. (EXPORT, u'导出'),
  88. (PRINT, u'打印'),
  89. (IMPORT, u'导入'),
  90. )
  91. user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=True, blank=True)
  92. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")
  93. description = models.CharField(max_length=1000, verbose_name=u"内容")
  94. data = models.TextField(verbose_name=u"数据", null=True, blank=True)
  95. create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
  96. objects = BizLogManager()
  97. class Meta:
  98. db_table = "system_log"
  99. ordering = ['-id']
  100. verbose_name = u"权限管理"
  101. default_permissions = ()
  102. permissions = (
  103. ("view_group", u"浏览"),
  104. ("add_group", u"添加"),
  105. ("delete_group", u"删除"),
  106. )