32 lines
1.1 KiB
Python
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']
|
|
|