models.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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. delete = models.BooleanField(verbose_name=u"删除", default=False)
  23. @staticmethod
  24. def getTypeText(type):
  25. return Option.TYPE_CHOICES[type][1]
  26. @staticmethod
  27. def getById(id):
  28. try:
  29. id = int(id)
  30. except:
  31. raise CustomError(u'无效的自定义项ID')
  32. instance = Option.objects.filter(pk=id).first()
  33. if not instance:
  34. raise CustomError(u'未找到相应的自定义项')
  35. return instance
  36. @staticmethod
  37. def getByName(name, type):
  38. option = Option.objects.filter(name=name,type=type).first()
  39. if not option:
  40. raise CustomError(u'未找到[%s]为[%s]的自定义项' % (Option.getTypeText(type),name))
  41. return option
  42. class Meta:
  43. db_table = "system_option"
  44. verbose_name = u"自定义项管理"
  45. ordering = ('-id', )
  46. index_together = (
  47. 'name',
  48. )
  49. default_permissions = ()
  50. class BizLogManager(models.Manager):
  51. def addnew(self, user, type, description, data=None):
  52. def default(o):
  53. if isinstance(o, datetime.datetime):
  54. return strftime(o)
  55. elif isinstance(o, datetime.date):
  56. return strfdate(o)
  57. row = self.model(user=user, type=type, description=description, create_time=timezone.now())
  58. if data:
  59. row.data = json.dumps(data, default=default)
  60. row.save()
  61. return row
  62. class BizLog(models.Model):
  63. INSERT = 1
  64. UPDATE = 2
  65. DELETE = 3
  66. CHECK = 4
  67. EXPORT = 5
  68. PRINT = 6
  69. IMPORT = 7
  70. TYPE_CHOICES = (
  71. (INSERT, u'添加'),
  72. (UPDATE, u'修改'),
  73. (DELETE, u'删除'),
  74. (CHECK, u'审核'),
  75. (EXPORT, u'导出'),
  76. (PRINT, u'打印'),
  77. (IMPORT, u'导入'),
  78. )
  79. user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=True, blank=True)
  80. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")
  81. description = models.CharField(max_length=1000, verbose_name=u"内容")
  82. data = models.TextField(verbose_name=u"数据", null=True, blank=True)
  83. create_time = models.DateTimeField(verbose_name=u"添加时间", auto_now_add=True, editable=False)
  84. objects = BizLogManager()
  85. class Meta:
  86. db_table = "system_log"
  87. ordering = ['-id']
  88. verbose_name = u"日志管理"
  89. default_permissions = ()
  90. class Config(models.Model):
  91. KEY_WECHAT_APPID = "wechat_appid" #小程序appid
  92. KEY_WECHAT_SESSION_KEY = "wechat_session_key" #小程序密钥
  93. KEY_ABUTMENT_XGJ = "abutment_xgj" # 对接销管佳
  94. KEY_XGJ_SESSION_KEY = "xgj_session_key" # 销管佳密钥
  95. KEY_XGJ_IP = "xgj_ip" # 销管佳地址
  96. property = models.CharField(max_length=100, verbose_name=u'属性')
  97. value = models.TextField(verbose_name=u'值')
  98. class Meta:
  99. db_table = "system_config"
  100. verbose_name = u"基础设置"
  101. index_together = (
  102. 'property',
  103. )
  104. default_permissions = ()
  105. permissions = [
  106. ('browse_config', u'查看'),
  107. ('set_config', u'设置'),
  108. ]
  109. @staticmethod
  110. def getConfigValue(property):
  111. try:
  112. row = Config.objects.get(property=property)
  113. return row.value
  114. except:
  115. return ''