models.py 3.1 KB

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