mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 18:07:02 +00:00
54 lines
1.6 KiB
Python
54 lines
1.6 KiB
Python
"""
|
|
notification serializer file
|
|
"""
|
|
# third party imports
|
|
from rest_framework import serializers
|
|
|
|
# local imports
|
|
from notifications.utils import register_fcm_token
|
|
from notifications.models import Notification
|
|
|
|
|
|
class RegisterDevice(serializers.Serializer):
|
|
"""
|
|
used to create and validate register device token
|
|
"""
|
|
registration_id = serializers.CharField(max_length=250)
|
|
device_id = serializers.CharField(max_length=250)
|
|
type = serializers.ChoiceField(choices=["ios", "web", "android"])
|
|
|
|
class Meta:
|
|
""" meta class """
|
|
fields = ('registration_id', 'type', 'device_id')
|
|
|
|
def create(self, validated_data):
|
|
""" override this method to create device token for users """
|
|
registration_id = validated_data['registration_id']
|
|
device_type = validated_data['type']
|
|
return register_fcm_token(self.context['user_id'], registration_id,
|
|
validated_data['device_id'], device_type)
|
|
|
|
|
|
class NotificationListSerializer(serializers.ModelSerializer):
|
|
"""List of notification"""
|
|
badge = serializers.SerializerMethodField()
|
|
|
|
class Meta(object):
|
|
"""meta info"""
|
|
model = Notification
|
|
fields = ['id', 'data', 'badge', 'is_read', 'created_at']
|
|
|
|
@staticmethod
|
|
def get_badge(obj):
|
|
return Notification.objects.filter(notification_to=obj.notification_to, is_read=False).count()
|
|
|
|
|
|
class ReadNotificationSerializer(serializers.ModelSerializer):
|
|
"""User task Serializer"""
|
|
id = serializers.ListSerializer(child=serializers.IntegerField())
|
|
|
|
class Meta(object):
|
|
"""Meta class"""
|
|
model = Notification
|
|
fields = ('id',)
|