mirror of
https://github.com/jumpserver/jumpserver.git
synced 2026-07-02 15:08:22 +00:00
60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
from django.db import models
|
|
|
|
from common.db.models import JMSBaseModel
|
|
from ..const import SiteMessageDisplayMode
|
|
|
|
__all__ = ('SiteMessage', 'MessageContent')
|
|
|
|
|
|
class SiteMessage(JMSBaseModel):
|
|
content = models.ForeignKey('notifications.MessageContent', on_delete=models.CASCADE,
|
|
db_constraint=False, related_name='messages')
|
|
user = models.ForeignKey('users.User', on_delete=models.CASCADE, db_constraint=False)
|
|
has_read = models.BooleanField(default=False)
|
|
read_at = models.DateTimeField(default=None, null=True)
|
|
comment = ''
|
|
|
|
def as_data(self):
|
|
return {
|
|
'id': str(self.id),
|
|
'content': self.content.as_data() if self.content else {},
|
|
'has_read': self.has_read,
|
|
'date_created': str(self.date_created)
|
|
}
|
|
|
|
|
|
class MessageContent(JMSBaseModel):
|
|
DisplayMode = SiteMessageDisplayMode
|
|
|
|
subject = models.CharField(max_length=1024)
|
|
message = models.TextField()
|
|
users = models.ManyToManyField(
|
|
'users.User', through=SiteMessage,
|
|
related_name='recv_site_messages'
|
|
)
|
|
groups = models.ManyToManyField('users.UserGroup')
|
|
is_broadcast = models.BooleanField(default=False)
|
|
display_mode = models.CharField(
|
|
default=DisplayMode.default,
|
|
choices=DisplayMode.choices,
|
|
max_length=32,
|
|
)
|
|
sender = models.ForeignKey(
|
|
'users.User', db_constraint=False, on_delete=models.DO_NOTHING, null=True, default=None,
|
|
related_name='send_site_message'
|
|
)
|
|
comment = ''
|
|
|
|
has_read = False
|
|
read_at = None
|
|
|
|
def as_data(self):
|
|
return {
|
|
'id': str(self.id),
|
|
'subject': self.subject,
|
|
'message': self.message,
|
|
'display_mode': self.display_mode,
|
|
'date_created': str(self.date_created),
|
|
'sender': str(self.sender) if self.sender else ''
|
|
}
|