models.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. VEHICLE_GEARBOX = 3
  14. VEHICLE_COLOR = 4
  15. VEHICLE_EMISSION = 5
  16. VEHICLE_DISPLACEMENT = 6
  17. VEHICLE_SEAT_COUNT = 7
  18. VEHICLE_OIL = 8
  19. TYPE_CHOICES = (
  20. (USED_VEHICLE_BRAND, u'二手车品牌'),
  21. (MAINT_TYPE, u'服务类型'),
  22. (PRODUCT_CATEGORY, u'商品类别'),
  23. (VEHICLE_GEARBOX, u'汽车变速箱'),
  24. (VEHICLE_COLOR, u'汽车颜色'),
  25. (VEHICLE_EMISSION, u'汽车排放标准'),
  26. (VEHICLE_DISPLACEMENT, u'汽车排量'),
  27. (VEHICLE_SEAT_COUNT, u'汽车座位数'),
  28. (VEHICLE_OIL, u'汽车燃油类型'),
  29. )
  30. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")
  31. name = models.CharField(max_length=100, verbose_name=u"名称")
  32. notes = models.CharField(max_length=500, verbose_name=u"备注",blank=True,null=True)
  33. enable = models.BooleanField(verbose_name=u"在用", default=True)
  34. delete = models.BooleanField(verbose_name=u"删除", default=False)
  35. @staticmethod
  36. def getTypeText(type):
  37. return Option.TYPE_CHOICES[type][1]
  38. @staticmethod
  39. def getById(id):
  40. try:
  41. id = int(id)
  42. except:
  43. raise CustomError(u'无效的自定义项ID')
  44. instance = Option.objects.filter(pk=id).first()
  45. if not instance:
  46. raise CustomError(u'未找到相应的自定义项')
  47. return instance
  48. @staticmethod
  49. def getByName(name, type):
  50. option = Option.objects.filter(name=name,type=type).first()
  51. if not option:
  52. raise CustomError(u'未找到[%s]为[%s]的自定义项' % (Option.getTypeText(type),name))
  53. return option
  54. class Meta:
  55. db_table = "system_option"
  56. verbose_name = u"自定义项管理"
  57. ordering = ('-id', )
  58. index_together = (
  59. 'name',
  60. )
  61. default_permissions = ()
  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. class Config(models.Model):
  103. KEY_WECHAT_APPID = "wechat_appid" #小程序appid
  104. KEY_WECHAT_SESSION_KEY = "wechat_session_key" #小程序密钥
  105. KEY_ABUTMENT_XGJ = "abutment_xgj" # 对接销管佳
  106. KEY_XGJ_SESSION_KEY = "xgj_session_key" # 销管佳密钥
  107. KEY_XGJ_IP = "xgj_ip" # 销管佳地址
  108. KEY_WECHAT_TENANT_NUM = "wechat_tenant_num" # 商户号
  109. KEY_WECHAT_TENANT_KEY = "wechat_tenant_key" # 商户密钥
  110. property = models.CharField(max_length=100, verbose_name=u'属性')
  111. value = models.TextField(verbose_name=u'值')
  112. class Meta:
  113. db_table = "system_config"
  114. verbose_name = u"基础设置"
  115. index_together = (
  116. 'property',
  117. )
  118. default_permissions = ()
  119. permissions = [
  120. ('browse_config', u'查看'),
  121. ('set_config', u'设置'),
  122. ]
  123. @staticmethod
  124. def getConfigValue(property):
  125. try:
  126. row = Config.objects.get(property=property)
  127. return row.value
  128. except:
  129. return ''
  130. @staticmethod
  131. def getConfigByText(text):
  132. if text == 'wechat_appid':
  133. property = Config.KEY_WECHAT_APPID
  134. elif text == 'wechat_session_key':
  135. property = Config.KEY_WECHAT_SESSION_KEY
  136. elif text == 'abutment_xgj':
  137. property = Config.KEY_ABUTMENT_XGJ
  138. elif text == 'xgj_session_key':
  139. property = Config.KEY_XGJ_SESSION_KEY
  140. elif text == 'xgj_ip':
  141. property = Config.KEY_XGJ_IP
  142. try:
  143. row = Config.objects.get(property=property)
  144. return row.value
  145. except:
  146. return ''