models.py 3.0 KB

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