You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
jumpserver/apps/notifications/serializers/site_msgs.py

56 lines
1.6 KiB

from rest_framework import serializers
from rest_framework.serializers import ModelSerializer
from common.utils import convert_html_to_markdown
from ..models import MessageContent
class SenderMixin(ModelSerializer):
sender = serializers.SerializerMethodField()
def get_sender(self, site_msg):
sender = site_msg.sender
if sender:
return str(sender)
else:
return ''
class MessageContentSerializer(SenderMixin, ModelSerializer):
message = serializers.SerializerMethodField()
class Meta:
model = MessageContent
fields = [
'id', 'subject', 'message',
'date_created', 'date_updated',
'sender',
]
@staticmethod
def get_message(site_msg):
markdown = convert_html_to_markdown(site_msg.message)
return markdown
class SiteMessageSerializer(SenderMixin, ModelSerializer):
content = MessageContentSerializer(read_only=True)
class Meta:
model = MessageContent
fields = [
'id', 'has_read', 'read_at', 'content', 'date_created'
]
class SiteMessageIdsSerializer(serializers.Serializer):
ids = serializers.ListField(child=serializers.UUIDField())
class SiteMessageSendSerializer(serializers.Serializer):
subject = serializers.CharField()
message = serializers.CharField()
user_ids = serializers.ListField(child=serializers.UUIDField(), required=False)
group_ids = serializers.ListField(child=serializers.UUIDField(), required=False)
is_broadcast = serializers.BooleanField(default=False)