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.
 
 
 
 

57 lines
1.6 KiB

from rest_framework import serializers
from apps.support.models import SupportRoom, SupportMessage
class SupportMessageSerializer(serializers.ModelSerializer):
sender_name = serializers.SerializerMethodField()
timestamp_ms = serializers.SerializerMethodField()
class Meta:
model = SupportMessage
fields = (
'id',
'room',
'sender_type',
'sender_name',
'content',
'is_read',
'created_at',
'timestamp_ms',
)
read_only_fields = fields
def get_sender_name(self, obj: SupportMessage) -> str:
if obj.sender_type == SupportMessage.SenderType.SUPPORT:
if obj.sender and obj.sender.fullname:
return obj.sender.fullname
return 'Support Specialist'
if obj.sender and obj.sender.fullname:
return obj.sender.fullname
return 'You'
def get_timestamp_ms(self, obj: SupportMessage) -> int:
if not obj.created_at:
return 0
return int(obj.created_at.timestamp() * 1000)
class SendSupportMessageSerializer(serializers.Serializer):
content = serializers.CharField(
required=True,
allow_blank=False,
max_length=4000,
trim_whitespace=True,
)
class SupportRoomSerializer(serializers.ModelSerializer):
class Meta:
model = SupportRoom
fields = (
'id',
'status',
'unread_by_user',
'last_message_at',
'created_at',
)
read_only_fields = fields