models.py 1.6 KB

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