models.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # coding=utf-8
  2. from django.db import models
  3. from django.conf import settings
  4. from django.utils import timezone
  5. from apps.account.models import Department, User
  6. from apps.exceptions import CustomError
  7. from libs.filefield import PathAndRename
  8. class Notice(models.Model):
  9. NORMAL = 0
  10. URGENT = 1
  11. PRIORITY_CHOICES = (
  12. (NORMAL, u'普通'),
  13. (URGENT, u'紧急'),
  14. )
  15. department = models.ForeignKey(Department, verbose_name=u"部门", on_delete=models.PROTECT)
  16. priority = models.PositiveSmallIntegerField(choices=PRIORITY_CHOICES, verbose_name=u"优先级", default=NORMAL)
  17. title = models.CharField(max_length=100, verbose_name=u"标题")
  18. content = models.CharField(max_length=1024, verbose_name=u"公告内容")
  19. dendline = models.DateTimeField(verbose_name=u"截止时间")
  20. company = models.ForeignKey(Department, verbose_name=u'公司', editable=False, related_name='notice_ref_company')
  21. create_user = models.ForeignKey(User, editable=False, related_name='notice_ref_user', verbose_name=u"发布人", on_delete=models.PROTECT)
  22. create_time = models.DateTimeField(verbose_name=u"发布时间", default=timezone.now)
  23. hits = models.PositiveIntegerField(verbose_name=u"查看次数", default=0, editable=False)
  24. create_user_department = models.ForeignKey(Department, verbose_name=u"创建人部门", null=True, blank=True, on_delete=models.PROTECT,
  25. editable=False, related_name='notice_ref_create_user_department')
  26. class Meta:
  27. db_table = "office_notice"
  28. verbose_name = u"信息管理"
  29. ordering = ('-id',)
  30. default_permissions = ()
  31. permissions = (
  32. ("view_notice", u"浏览"),
  33. ("add_notice", u"添加"),
  34. ("delete_notice", u"删除"),
  35. )
  36. @staticmethod
  37. def getById(id):
  38. instance = Notice.objects.filter(pk=id).first()
  39. if not instance:
  40. raise CustomError(u'未找到相应的公告')
  41. return instance
  42. class NoticeBrowseRecord(models.Model):
  43. notice = models.ForeignKey(Notice, verbose_name=u"通知")
  44. browse_user = models.ForeignKey(User, editable=False,verbose_name=u"浏览人", on_delete=models.PROTECT)
  45. department = models.ForeignKey(Department, verbose_name=u"浏览人部门", null=True, blank=True, on_delete=models.PROTECT,
  46. editable=False, related_name='office_notice_browse_record_ref_department')
  47. create_time = models.DateTimeField(verbose_name=u"浏览时间", default=timezone.now)
  48. class Meta:
  49. db_table = "office_notice_browse_record"
  50. verbose_name = u"公告浏览记录"
  51. ordering = ('-id',)
  52. default_permissions = ()
  53. permissions = (
  54. ("view_browserecord", u"浏览"),
  55. )
  56. @staticmethod
  57. def getByNotice(id):
  58. instances = NoticeBrowseRecord.objects.filter(notice_id=id)
  59. return instances
  60. @staticmethod
  61. def getById(id):
  62. instance = NoticeBrowseRecord.objects.filter(pk=id).first()
  63. if not instance:
  64. raise CustomError(u'未找到相应的浏览记录')
  65. return instance
  66. class NoticeReply(models.Model):
  67. notice = models.ForeignKey(Notice, verbose_name=u"通知")
  68. content = models.CharField(max_length=500, verbose_name=u"内容")
  69. create_user = models.ForeignKey(User, editable=False, related_name='noticereply_ref_user', verbose_name=u"回复人", on_delete=models.PROTECT)
  70. create_time = models.DateTimeField(verbose_name=u"回复时间", default=timezone.now)
  71. department = models.ForeignKey(Department, verbose_name=u"回复人部门", null=True, blank=True, on_delete=models.PROTECT,
  72. editable=False, related_name='office_notice_reply_ref_department')
  73. class Meta:
  74. db_table = "office_notice_reply"
  75. verbose_name = u"公告回复"
  76. ordering = ("-id",)
  77. @staticmethod
  78. def getByNotice(id):
  79. instances = NoticeReply.objects.filter(notice_id=id)
  80. return instances
  81. @staticmethod
  82. def getById(id):
  83. instance = NoticeReply.objects.filter(pk=id).first()
  84. if not instance:
  85. raise CustomError(u'未找到相应的回复')
  86. return instance
  87. class NoticeAttachment(models.Model):
  88. notice = models.ForeignKey(Notice, verbose_name=u"通知")
  89. file = models.CharField(max_length=100, verbose_name=u"文件")
  90. class Meta:
  91. db_table = "office_notice_attachment"
  92. verbose_name = u"公告附件"
  93. @staticmethod
  94. def getByNotice(id):
  95. instances = NoticeAttachment.objects.filter(notice_id=id)
  96. return instances
  97. path_and_rename = PathAndRename("office_notice/files/")