models.py 3.2 KB

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