schon/engine/vibes_auth/messaging/serializers.py
Egor fureunoir Gorbunov 0abcb50e60 Features: 1) Add predefined permission sets and corresponding group initialization in initialize command.
Fixes: 1) Correct `image_url` return logic in models; 2) Fix indentation in the `save` method of `payments` model; 3) Update a minor comment typo in `serializers.py`.

Extra: 1) Minor cleanup of unused imports in `initialize` command.
2025-11-12 15:29:08 +03:00

112 lines
3.1 KiB
Python

from rest_framework.fields import CharField, BooleanField, IntegerField, ListField
from rest_framework.serializers import Serializer
# Generic/common serializers
class ErrorResponseSerializer(Serializer):
error = CharField(required=True)
detail = CharField(required=False)
class PongResponseSerializer(Serializer):
type = CharField(required=True)
# User message consumer
class UserMessageRequestSerializer(Serializer):
text = CharField(required=True)
class UserMessageResponseSerializer(Serializer):
ok = BooleanField(required=True)
thread_id = CharField(required=True)
message_id = CharField(required=True)
# Staff inbox consumer
class InboxThreadItemSerializer(Serializer):
uuid = CharField(required=True)
user_id = IntegerField(required=False, allow_null=True)
email = CharField(required=True)
assigned_to_id = IntegerField(required=False, allow_null=True)
last_message_at = CharField(required=True)
class StaffInboxListResponseSerializer(Serializer):
type = CharField(required=True)
threads = ListField(child=InboxThreadItemSerializer())
class StaffAssignRequestSerializer(Serializer):
action = CharField(required=True)
thread_id = CharField(required=True)
class StaffAssignResponseSerializer(Serializer):
type = CharField(required=True)
thread_id = CharField(required=True)
user = CharField(required=True)
class StaffReplyRequestSerializer(Serializer):
action = CharField(required=True)
thread_id = CharField(required=True)
text = CharField(required=True)
class StaffReplyResponseSerializer(Serializer):
type = CharField(required=True)
message_id = CharField(required=True)
class StaffCloseRequestSerializer(Serializer):
action = CharField(required=True)
thread_id = CharField(required=True)
class StaffCloseResponseSerializer(Serializer):
type = CharField(required=True)
thread_id = CharField(required=True)
class StaffInboxEventSerializer(Serializer):
"""A flexible event serializer for staff inbox messages over WS."""
type = CharField(required=True)
# Optional fields depending on the event type
threads = ListField(child=InboxThreadItemSerializer(), required=False)
thread_id = CharField(required=False)
user = CharField(required=False)
message_id = CharField(required=False)
error = CharField(required=False)
detail = CharField(required=False)
# Thread consumer
class ThreadReplyRequestSerializer(Serializer):
action = CharField(required=True)
text = CharField(required=True)
class ThreadReplyResponseSerializer(Serializer):
type = CharField(required=True)
message_id = CharField(required=True)
class ThreadCloseRequestSerializer(Serializer):
action = CharField(required=True)
class ThreadCloseResponseSerializer(Serializer):
type = CharField(required=True)
thread_id = CharField(required=True)
class ThreadOkResponseSerializer(Serializer):
thread = CharField(required=True)
ok = BooleanField(required=True)
class ThreadPongResponseSerializer(Serializer):
type = CharField(required=True)
thread = CharField(required=True)