Files
colio/notifications/serializers.py

32 lines
1.1 KiB
Python

from .models import *
from projects.models import *
from rest_framework import serializers
class NotificationSerializer(serializers.ModelSerializer):
meta = serializers.SerializerMethodField()
class Meta:
model = Notification
fields = ['id', 'content', 'note_type', 'is_read', 'meta']
def get_meta(self, obj):
REL_SERIALIZER_MAP = {
'project_invitation' : ProjectInvitationMetaSerializer,
}
for rel_name, serializer_cls in REL_SERIALIZER_MAP.items():
rel_obj = getattr(obj, rel_name, None)
if rel_obj is not None:
return serializer_cls(rel_obj).data
return None
class ProjectInvitationMetaSerializer(serializers.ModelSerializer):
project_invitation_id = serializers.CharField(source='id')
project_title = serializers.CharField(source='project.title')
from_user_nickname = serializers.CharField(source='from_user.nickname')
class Meta:
model = ProjectInvitation
fields = ['project_invitation_id', 'project_title', 'from_user_nickname', 'status']