Corp/backend/notifications/api/serializers.py

210 lines
7.6 KiB
Python

from rest_framework import serializers
class NotificationActorSerializer(serializers.Serializer):
id = serializers.IntegerField(allow_null=True)
name = serializers.CharField()
type = serializers.CharField(required=False, allow_null=True)
avatar = serializers.CharField(required=False, allow_blank=True, allow_null=True)
class NotificationItemSerializer(serializers.Serializer):
id = serializers.IntegerField()
title = serializers.CharField()
message = serializers.CharField()
short_message = serializers.CharField()
is_read = serializers.BooleanField()
created_at = serializers.DateTimeField()
category = serializers.CharField()
action_url = serializers.CharField(
required=False, allow_blank=True, allow_null=True)
data = serializers.JSONField(required=False, allow_null=True)
verb = serializers.CharField()
description = serializers.CharField()
actor = NotificationActorSerializer(required=False, allow_null=True)
unread = serializers.BooleanField()
public = serializers.BooleanField()
deleted = serializers.BooleanField()
emailed = serializers.BooleanField()
timestamp = serializers.DateTimeField()
timesince = serializers.CharField()
class NotificationsListResponseSerializer(serializers.Serializer):
total = serializers.IntegerField()
page = serializers.IntegerField()
page_size = serializers.IntegerField()
unread_count = serializers.IntegerField()
notifications = NotificationItemSerializer(many=True)
class CountResponseSerializer(serializers.Serializer):
count = serializers.IntegerField()
class UnreadSummaryVerbSerializer(serializers.Serializer):
verb = serializers.CharField()
unread = serializers.IntegerField()
class UnreadSummaryProcurementRequestSerializer(serializers.Serializer):
request_id = serializers.IntegerField()
unread = serializers.IntegerField()
class UnreadSummaryEmployeeRequestSerializer(serializers.Serializer):
request_id = serializers.IntegerField()
unread = serializers.IntegerField()
class UnreadSummaryProcurementItemCommentSerializer(serializers.Serializer):
item_id = serializers.IntegerField()
unread = serializers.IntegerField()
class UnreadSummaryTaskBoardSerializer(serializers.Serializer):
board_id = serializers.IntegerField()
unread = serializers.IntegerField()
class UnreadSummaryRegulationDepartmentSerializer(serializers.Serializer):
department_id = serializers.IntegerField()
unread = serializers.IntegerField()
class UnreadSummaryResponseSerializer(serializers.Serializer):
total = serializers.IntegerField()
verbs = UnreadSummaryVerbSerializer(many=True)
employee_requests = UnreadSummaryEmployeeRequestSerializer(many=True)
procurement_requests = UnreadSummaryProcurementRequestSerializer(many=True)
procurement_item_comments = UnreadSummaryProcurementItemCommentSerializer(
many=True,
)
task_boards = UnreadSummaryTaskBoardSerializer(many=True)
regulation_departments = UnreadSummaryRegulationDepartmentSerializer(
many=True,
)
regulation_company_unread = serializers.IntegerField()
regulation_personal_unread = serializers.IntegerField()
class StatusResponseSerializer(serializers.Serializer):
status = serializers.CharField()
message = serializers.CharField(required=False)
notification_id = serializers.IntegerField(required=False)
count = serializers.IntegerField(required=False)
deleted_count = serializers.IntegerField(required=False)
device_id = serializers.IntegerField(required=False)
created = serializers.BooleanField(required=False)
verbs = serializers.ListField(
child=serializers.CharField(),
required=False,
)
class VerbTypeSerializer(serializers.Serializer):
verb = serializers.CharField()
name = serializers.CharField()
total = serializers.IntegerField()
unread = serializers.IntegerField()
class VerbTypesResponseSerializer(serializers.Serializer):
verb_types = VerbTypeSerializer(many=True)
class MarkAllAsReadRequestSerializer(serializers.Serializer):
verb = serializers.CharField(required=False)
class MarkCategoryAsReadRequestSerializer(serializers.Serializer):
verbs = serializers.ListField(child=serializers.CharField())
category = serializers.CharField(required=False)
class ChannelPreferencesSerializer(serializers.Serializer):
web_enabled = serializers.BooleanField()
email_enabled = serializers.BooleanField()
email_frequency = serializers.CharField()
push_enabled = serializers.BooleanField()
dnd_enabled = serializers.BooleanField()
dnd_start_time = serializers.CharField(required=False, allow_null=True)
dnd_end_time = serializers.CharField(required=False, allow_null=True)
disabled_verbs = serializers.ListField(child=serializers.CharField())
class UpdateChannelPreferencesSerializer(serializers.Serializer):
web_enabled = serializers.BooleanField(required=False)
email_enabled = serializers.BooleanField(required=False)
email_frequency = serializers.CharField(required=False)
push_enabled = serializers.BooleanField(required=False)
dnd_enabled = serializers.BooleanField(required=False)
dnd_start_time = serializers.CharField(required=False, allow_null=True)
dnd_end_time = serializers.CharField(required=False, allow_null=True)
disabled_verbs = serializers.ListField(
child=serializers.CharField(),
required=False,
)
class VapidPublicKeyResponseSerializer(serializers.Serializer):
status = serializers.CharField()
message = serializers.CharField(required=False)
vapid_public_key = serializers.CharField(required=False, allow_null=True)
class PushKeysSerializer(serializers.Serializer):
p256dh = serializers.CharField()
auth = serializers.CharField()
class SubscribePushRequestSerializer(serializers.Serializer):
endpoint = serializers.CharField()
keys = PushKeysSerializer()
device_name = serializers.CharField(required=False)
installation_id = serializers.UUIDField(required=False)
device_group_id = serializers.UUIDField(required=False)
app_kind = serializers.ChoiceField(
choices=("main", "messenger"),
required=False,
default="main",
)
installed = serializers.BooleanField(required=False, default=False)
class UnsubscribePushRequestSerializer(serializers.Serializer):
endpoint = serializers.CharField(required=False)
device_group_id = serializers.UUIDField(required=False)
class InstallationHeartbeatRequestSerializer(serializers.Serializer):
installation_id = serializers.UUIDField()
device_group_id = serializers.UUIDField()
app_kind = serializers.ChoiceField(choices=("main", "messenger"))
device_name = serializers.CharField(required=False, allow_blank=True)
installed = serializers.BooleanField(required=False, default=True)
class DeliveryRoutingRequestSerializer(serializers.Serializer):
device_group_id = serializers.UUIDField()
routes = serializers.DictField(
child=serializers.ListField(
child=serializers.ChoiceField(choices=("main", "messenger")),
allow_empty=False,
),
)
class DeliveryRoutingResponseSerializer(serializers.Serializer):
device_group_id = serializers.UUIDField()
categories = serializers.ListField(child=serializers.DictField())
routes = serializers.DictField(
child=serializers.ListField(child=serializers.CharField())
)
installations = serializers.ListField(child=serializers.DictField())
class DisconnectInstallationRequestSerializer(serializers.Serializer):
device_group_id = serializers.UUIDField()
app_kind = serializers.ChoiceField(choices=("main", "messenger"))