funkwhale/api/funkwhale_api/history/serializers.py

49 wiersze
1.6 KiB
Python
Czysty Zwykły widok Historia

from rest_framework import serializers
2018-03-01 22:41:51 +00:00
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
2018-07-17 11:09:13 +00:00
from funkwhale_api.music.serializers import TrackActivitySerializer, TrackSerializer
2018-03-01 22:41:51 +00:00
from . import models
2018-03-01 22:41:51 +00:00
class ListeningActivitySerializer(activity_serializers.ModelSerializer):
type = serializers.SerializerMethodField()
2018-06-09 13:36:16 +00:00
object = TrackActivitySerializer(source="track")
actor = federation_serializers.APIActorSerializer()
2018-06-09 13:36:16 +00:00
published = serializers.DateTimeField(source="creation_date")
2018-03-01 22:41:51 +00:00
class Meta:
model = models.Listening
2018-06-09 13:36:16 +00:00
fields = ["id", "local_id", "object", "type", "actor", "published"]
2018-03-01 22:41:51 +00:00
def get_type(self, obj):
2018-06-09 13:36:16 +00:00
return "Listen"
2018-03-01 22:41:51 +00:00
class ListeningSerializer(serializers.ModelSerializer):
2018-07-17 11:09:13 +00:00
track = TrackSerializer(read_only=True)
actor = federation_serializers.APIActorSerializer(read_only=True)
2018-07-17 11:09:13 +00:00
class Meta:
model = models.Listening
fields = ("id", "actor", "track", "creation_date", "actor")
2018-07-17 11:09:13 +00:00
def create(self, validated_data):
validated_data["actor"] = self.context["user"].actor
2018-07-17 11:09:13 +00:00
return super().create(validated_data)
class ListeningWriteSerializer(serializers.ModelSerializer):
actor = federation_serializers.APIActorSerializer(read_only=True, required=False)
class Meta:
model = models.Listening
fields = ("id", "actor", "track", "creation_date")
def create(self, validated_data):
validated_data["actor"] = self.context["user"].actor
return super().create(validated_data)