123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- # coding=utf-8
- from django.db import models
- from django.conf import settings
- from django.utils import timezone
- from apps.account.models import Department, User
- from apps.exceptions import CustomError
- from libs.filefield import PathAndRename
- class Notice(models.Model):
- NORMAL = 0
- URGENT = 1
- PRIORITY_CHOICES = (
- (NORMAL, u'普通'),
- (URGENT, u'紧急'),
- )
- department = models.ForeignKey(Department, verbose_name=u"部门", on_delete=models.PROTECT)
- priority = models.PositiveSmallIntegerField(choices=PRIORITY_CHOICES, verbose_name=u"优先级", default=NORMAL)
- title = models.CharField(max_length=100, verbose_name=u"标题")
- content = models.CharField(max_length=1024, verbose_name=u"公告内容")
- dendline = models.DateTimeField(verbose_name=u"截止时间")
- company = models.ForeignKey(Department, verbose_name=u'公司', editable=False, related_name='notice_ref_company')
- create_user = models.ForeignKey(User, editable=False, related_name='notice_ref_user', verbose_name=u"发布人", on_delete=models.PROTECT)
- create_time = models.DateTimeField(verbose_name=u"发布时间", default=timezone.now)
- hits = models.PositiveIntegerField(verbose_name=u"查看次数", default=0, editable=False)
- create_user_department = models.ForeignKey(Department, verbose_name=u"创建人部门", null=True, blank=True, on_delete=models.PROTECT,
- editable=False, related_name='notice_ref_create_user_department')
- class Meta:
- db_table = "office_notice"
- verbose_name = u"信息管理"
- ordering = ('-id',)
- default_permissions = ()
- permissions = (
- ("view_notice", u"浏览"),
- ("add_notice", u"添加"),
- ("delete_notice", u"删除"),
- )
- @staticmethod
- def getById(id):
- instance = Notice.objects.filter(pk=id).first()
- if not instance:
- raise CustomError(u'未找到相应的公告')
- return instance
- class NoticeBrowseRecord(models.Model):
- notice = models.ForeignKey(Notice, verbose_name=u"通知")
- browse_user = models.ForeignKey(User, editable=False,verbose_name=u"浏览人", on_delete=models.PROTECT)
- department = models.ForeignKey(Department, verbose_name=u"浏览人部门", null=True, blank=True, on_delete=models.PROTECT,
- editable=False, related_name='office_notice_browse_record_ref_department')
- create_time = models.DateTimeField(verbose_name=u"浏览时间", default=timezone.now)
- class Meta:
- db_table = "office_notice_browse_record"
- verbose_name = u"公告浏览记录"
- ordering = ('-id',)
- default_permissions = ()
- permissions = (
- ("view_browserecord", u"浏览"),
- )
- @staticmethod
- def getByNotice(id):
- instances = NoticeBrowseRecord.objects.filter(notice_id=id)
- return instances
- @staticmethod
- def getById(id):
- instance = NoticeBrowseRecord.objects.filter(pk=id).first()
- if not instance:
- raise CustomError(u'未找到相应的浏览记录')
- return instance
- class NoticeReply(models.Model):
- notice = models.ForeignKey(Notice, verbose_name=u"通知")
- content = models.CharField(max_length=500, verbose_name=u"内容")
- create_user = models.ForeignKey(User, editable=False, related_name='noticereply_ref_user', verbose_name=u"回复人", on_delete=models.PROTECT)
- create_time = models.DateTimeField(verbose_name=u"回复时间", default=timezone.now)
- department = models.ForeignKey(Department, verbose_name=u"回复人部门", null=True, blank=True, on_delete=models.PROTECT,
- editable=False, related_name='office_notice_reply_ref_department')
- class Meta:
- db_table = "office_notice_reply"
- verbose_name = u"公告回复"
- ordering = ("-id",)
- @staticmethod
- def getByNotice(id):
- instances = NoticeReply.objects.filter(notice_id=id)
- return instances
- @staticmethod
- def getById(id):
- instance = NoticeReply.objects.filter(pk=id).first()
- if not instance:
- raise CustomError(u'未找到相应的回复')
- return instance
- class NoticeAttachment(models.Model):
- notice = models.ForeignKey(Notice, verbose_name=u"通知")
- file = models.CharField(max_length=100, verbose_name=u"文件")
- class Meta:
- db_table = "office_notice_attachment"
- verbose_name = u"公告附件"
- @staticmethod
- def getByNotice(id):
- instances = NoticeAttachment.objects.filter(notice_id=id)
- return instances
- path_and_rename = PathAndRename("office_notice/files/")
|