sync from local backup
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
from django.db import models
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
MSG_TYPE_CHOICES = [
|
||||
('reply', '回复'),
|
||||
('at_me', '@我'),
|
||||
('like', '点赞'),
|
||||
]
|
||||
|
||||
TARGET_TYPE_CHOICES = [
|
||||
('comment', '评论'),
|
||||
('article', '文章'),
|
||||
]
|
||||
|
||||
SYSTEM_CATEGORY_CHOICES = [
|
||||
('system', '系统通知'),
|
||||
('activity', '活动通知'),
|
||||
('security', '安全提醒'),
|
||||
('update', '功能更新'),
|
||||
]
|
||||
|
||||
|
||||
class Message(models.Model):
|
||||
recipient = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='messages',
|
||||
verbose_name='接收者'
|
||||
)
|
||||
sender = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.SET_NULL,
|
||||
related_name='sent_messages',
|
||||
verbose_name='发送者',
|
||||
null=True,
|
||||
blank=True
|
||||
)
|
||||
msg_type = models.CharField(max_length=20, choices=MSG_TYPE_CHOICES, verbose_name='消息类型')
|
||||
title = models.CharField(max_length=200, verbose_name='标题')
|
||||
content = models.TextField(verbose_name='内容')
|
||||
extra_info = models.CharField(max_length=500, blank=True, default='', verbose_name='附加信息')
|
||||
target_link = models.CharField(max_length=500, blank=True, default='', verbose_name='跳转链接')
|
||||
target_type = models.CharField(max_length=20, blank=True, default='', choices=TARGET_TYPE_CHOICES, verbose_name='目标类型')
|
||||
target_id = models.PositiveIntegerField(null=True, blank=True, verbose_name='目标ID')
|
||||
is_read = models.BooleanField(default=False, verbose_name='是否已读')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '消息'
|
||||
verbose_name_plural = '消息'
|
||||
ordering = ['-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.get_msg_type_display()} - {self.title}'
|
||||
|
||||
|
||||
class SystemMessage(models.Model):
|
||||
title = models.CharField(max_length=200, verbose_name='标题')
|
||||
content = models.TextField(verbose_name='摘要')
|
||||
detail = models.TextField(verbose_name='详情正文')
|
||||
category = models.CharField(max_length=20, choices=SYSTEM_CATEGORY_CHOICES, verbose_name='分类')
|
||||
icon_name = models.CharField(max_length=50, blank=True, default='', verbose_name='图标名称')
|
||||
icon_color = models.CharField(max_length=20, blank=True, default='#1890ff', verbose_name='图标颜色')
|
||||
is_global = models.BooleanField(default=True, verbose_name='是否全局广播')
|
||||
created_at = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '系统消息'
|
||||
verbose_name_plural = '系统消息'
|
||||
ordering = ['-created_at']
|
||||
|
||||
def __str__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
class SystemMessageRead(models.Model):
|
||||
user = models.ForeignKey(
|
||||
settings.AUTH_USER_MODEL,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='system_message_reads',
|
||||
verbose_name='用户'
|
||||
)
|
||||
system_message = models.ForeignKey(
|
||||
SystemMessage,
|
||||
on_delete=models.CASCADE,
|
||||
related_name='read_records',
|
||||
verbose_name='系统消息'
|
||||
)
|
||||
read_at = models.DateTimeField(auto_now_add=True, verbose_name='阅读时间')
|
||||
|
||||
class Meta:
|
||||
verbose_name = '系统消息已读'
|
||||
verbose_name_plural = '系统消息已读'
|
||||
unique_together = ['user', 'system_message']
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.user} read {self.system_message}'
|
||||
Reference in New Issue
Block a user