""" 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',)