funkwhale/api/funkwhale_api/favorites/serializers.py

67 wiersze
2.1 KiB
Python
Czysty Zwykły widok Historia

from rest_framework import serializers
from funkwhale_api.activity import serializers as activity_serializers
2019-09-09 09:10:25 +00:00
from funkwhale_api.federation import serializers as federation_serializers
2022-07-20 12:31:57 +00:00
from funkwhale_api.music.serializers import (
TrackActivitySerializer,
TrackSerializer,
)
2018-07-17 11:09:13 +00:00
from funkwhale_api.users.serializers import UserActivitySerializer, UserBasicSerializer
2022-07-20 12:31:57 +00:00
from drf_spectacular.utils import extend_schema_field
from . import models
class TrackFavoriteActivitySerializer(activity_serializers.ModelSerializer):
type = serializers.SerializerMethodField()
2018-06-09 13:36:16 +00:00
object = TrackActivitySerializer(source="track")
actor = UserActivitySerializer(source="user")
published = serializers.DateTimeField(source="creation_date")
class Meta:
model = models.TrackFavorite
2018-06-09 13:36:16 +00:00
fields = ["id", "local_id", "object", "type", "actor", "published"]
def get_actor(self, obj):
return UserActivitySerializer(obj.user).data
def get_type(self, obj):
2018-06-09 13:36:16 +00:00
return "Like"
class UserTrackFavoriteSerializer(serializers.ModelSerializer):
2018-07-17 11:09:13 +00:00
track = TrackSerializer(read_only=True)
user = UserBasicSerializer(read_only=True)
2019-09-09 09:10:25 +00:00
actor = serializers.SerializerMethodField()
2018-07-17 11:09:13 +00:00
class Meta:
model = models.TrackFavorite
2019-09-09 09:10:25 +00:00
fields = ("id", "user", "track", "creation_date", "actor")
actor = serializers.SerializerMethodField()
2022-07-20 12:31:57 +00:00
@extend_schema_field(federation_serializers.APIActorSerializer)
2019-09-09 09:10:25 +00:00
def get_actor(self, obj):
actor = obj.user.actor
if actor:
return federation_serializers.APIActorSerializer(actor).data
2018-07-17 11:09:13 +00:00
class UserTrackFavoriteWriteSerializer(serializers.ModelSerializer):
class Meta:
model = models.TrackFavorite
2018-06-09 13:36:16 +00:00
fields = ("id", "track", "creation_date")
2022-09-28 17:53:49 +00:00
class SimpleFavoriteSerializer(serializers.Serializer):
id = serializers.IntegerField()
track = serializers.IntegerField()
class AllFavoriteSerializer(serializers.Serializer):
results = SimpleFavoriteSerializer(many=True, source="*")
count = serializers.SerializerMethodField()
def get_count(self, o) -> int:
return len(o)