mirror of
https://github.com/narrrl/holy-flavor-rater.git
synced 2026-11-03 16:41:27 +01:00
65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
from rest_framework import serializers
|
|
|
|
from api.models import Notification, ProfileComment
|
|
from api.serializers._helpers import absolute_image_url
|
|
|
|
|
|
class ProfileCommentSerializer(serializers.ModelSerializer):
|
|
author_username = serializers.CharField(source="author.username", read_only=True)
|
|
author_avatar = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = ProfileComment
|
|
fields = ["id", "author_username", "author_avatar", "text", "created_at"]
|
|
|
|
def get_author_avatar(self, obj: ProfileComment) -> str | None:
|
|
return absolute_image_url(self, obj.author.avatar)
|
|
|
|
|
|
class NotificationSerializer(serializers.ModelSerializer):
|
|
actor_username = serializers.CharField(source="actor.username", read_only=True)
|
|
actor_avatar = serializers.SerializerMethodField()
|
|
flavor_name = serializers.SerializerMethodField()
|
|
flavor_id = serializers.SerializerMethodField()
|
|
profile_owner_username = serializers.SerializerMethodField()
|
|
|
|
class Meta:
|
|
model = Notification
|
|
fields = [
|
|
"id",
|
|
"actor_username",
|
|
"actor_avatar",
|
|
"notification_type",
|
|
"rating",
|
|
"reply",
|
|
"ticket",
|
|
"profile_comment",
|
|
"profile_owner_username",
|
|
"is_read",
|
|
"created_at",
|
|
"flavor_name",
|
|
"flavor_id",
|
|
]
|
|
|
|
def get_actor_avatar(self, obj: Notification) -> str | None:
|
|
return absolute_image_url(self, obj.actor.avatar)
|
|
|
|
def get_flavor_name(self, obj: Notification) -> str | None:
|
|
if obj.rating:
|
|
return obj.rating.flavor.name
|
|
if obj.reply:
|
|
return obj.reply.rating.flavor.name
|
|
return None
|
|
|
|
def get_flavor_id(self, obj: Notification) -> int | None:
|
|
if obj.rating:
|
|
return obj.rating.flavor.id
|
|
if obj.reply:
|
|
return obj.reply.rating.flavor.id
|
|
return None
|
|
|
|
def get_profile_owner_username(self, obj: Notification) -> str | None:
|
|
if obj.profile_comment:
|
|
return obj.profile_comment.profile_owner.username
|
|
return None
|