diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py index cc78358cb..6e2c0fe2c 100644 --- a/api/funkwhale_api/music/serializers.py +++ b/api/funkwhale_api/music/serializers.py @@ -201,7 +201,6 @@ class AlbumSerializer(OptionalDescriptionMixin, serializers.Serializer): release_date = serializers.DateField() creation_date = serializers.DateTimeField() is_local = serializers.BooleanField() - is_playable = serializers.SerializerMethodField() get_attributed_to = serialize_attributed_to @@ -302,6 +301,7 @@ class TrackSerializer(OptionalDescriptionMixin, serializers.Serializer): license = serializers.SerializerMethodField() cover = cover_field get_attributed_to = serialize_attributed_to + is_playable = serializers.SerializerMethodField() def get_artist(self, o): return serialize_artist_simple(o.artist) @@ -323,6 +323,9 @@ class TrackSerializer(OptionalDescriptionMixin, serializers.Serializer): def get_license(self, o): return o.license_id + def get_is_playable(self, obj): + return bool(getattr(obj, "playable_uploads", [])) + @common_serializers.track_fields_for_update("name", "description", "privacy_level") class LibraryForOwnerSerializer(serializers.ModelSerializer): diff --git a/api/tests/music/test_serializers.py b/api/tests/music/test_serializers.py index c0bb2298f..a0746d3b8 100644 --- a/api/tests/music/test_serializers.py +++ b/api/tests/music/test_serializers.py @@ -255,6 +255,7 @@ def test_track_serializer(factories, to_api_date): "attributed_to": federation_serializers.APIActorSerializer(actor).data, "cover": common_serializers.AttachmentSerializer(track.attachment_cover).data, "downloads_count": track.downloads_count, + "is_playable": bool(track.playable_uploads), } serializer = serializers.TrackSerializer(track) assert serializer.data == expected diff --git a/changes/changelog.d/playable.bugfix b/changes/changelog.d/playable.bugfix new file mode 100644 index 000000000..331ab8421 --- /dev/null +++ b/changes/changelog.d/playable.bugfix @@ -0,0 +1 @@ +Added missing is_playable serializer for the tracks endpoint.