models.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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.format import strftime, strfdate
  8. from apps.tenant.models import Tenant
  9. class BizLogManager(models.Manager):
  10. def addnew(self, tenant, user, type, description, data=None):
  11. def default(o):
  12. if isinstance(o, datetime.datetime):
  13. return strftime(o)
  14. elif isinstance(o, datetime.date):
  15. return strfdate(o)
  16. row = self.model(tenant=tenant, user=user, type=type, description=description)
  17. if data:
  18. row.data = json.dumps(data, default=default)
  19. row.save()
  20. return row
  21. class BizLog(models.Model):
  22. INSERT = 1
  23. UPDATE = 2
  24. DELETE = 3
  25. IMPORT = 4
  26. TYPE_CHOICES = (
  27. (INSERT, u'添加'),
  28. (UPDATE, u'修改'),
  29. (DELETE, u'删除'),
  30. (IMPORT, u'导入'),
  31. )
  32. TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICES]
  33. user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=True, blank=True)
  34. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")
  35. description = models.CharField(max_length=1000, verbose_name=u"内容")
  36. data = models.TextField(verbose_name=u"数据", null=True, blank=True)
  37. create_time = models.DateTimeField(verbose_name=u"添加时间", default=timezone.now, editable=False)
  38. tenant = models.ForeignKey(Tenant, verbose_name=u'租户', on_delete=models.PROTECT, null=True, blank=True)
  39. objects = BizLogManager()
  40. class Meta:
  41. db_table = "system_log"
  42. ordering = ['-id']
  43. index_together = (
  44. 'create_time',
  45. 'type',
  46. )
  47. verbose_name = u"系统日志"
  48. default_permissions = ()