models.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. TYPE_CHOICES = (
  25. (INSERT, u'添加'),
  26. (UPDATE, u'修改'),
  27. (DELETE, u'删除'),
  28. )
  29. TYPE_JSON = [{'id': item[0], 'value': item[1]} for item in TYPE_CHOICES]
  30. user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=True, blank=True)
  31. type = models.PositiveSmallIntegerField(choices=TYPE_CHOICES, verbose_name=u"类别")
  32. description = models.CharField(max_length=1000, verbose_name=u"内容")
  33. data = models.TextField(verbose_name=u"数据", null=True, blank=True)
  34. create_time = models.DateTimeField(verbose_name=u"添加时间", default=timezone.now, editable=False)
  35. objects = SysLogManager()
  36. class Meta:
  37. db_table = "sys_log"
  38. ordering = ['-id']
  39. index_together = (
  40. 'create_time',
  41. 'type',
  42. )
  43. verbose_name = u"系统日志"
  44. default_permissions = ()