From c8702ca72672cdf4e6d0698088073024f9845488 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Wed, 11 Dec 2019 10:49:45 +0100 Subject: [PATCH] Fx #986: Fixed invalid displayed number of tracks in playlist --- api/funkwhale_api/playlists/views.py | 2 +- api/tests/playlists/test_views.py | 12 ++++++++++++ changes/changelog.d/986.bugfix | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 changes/changelog.d/986.bugfix diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 6f9ea23ce..f2ade8181 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -24,7 +24,7 @@ class PlaylistViewSet( queryset = ( models.Playlist.objects.all() .select_related("user__actor") - .annotate(tracks_count=Count("playlist_tracks")) + .annotate(tracks_count=Count("playlist_tracks", distinct=True)) .with_covers() .with_duration() ) diff --git a/api/tests/playlists/test_views.py b/api/tests/playlists/test_views.py index 1c2b0f19e..2be64b2bb 100644 --- a/api/tests/playlists/test_views.py +++ b/api/tests/playlists/test_views.py @@ -25,6 +25,18 @@ def test_serializer_includes_tracks_count(factories, logged_in_api_client): assert response.data["tracks_count"] == 1 +def test_serializer_includes_tracks_count_986(factories, logged_in_api_client): + playlist = factories["playlists.Playlist"]() + plt = factories["playlists.PlaylistTrack"](playlist=playlist) + factories["music.Upload"].create_batch( + 3, track=plt.track, library__privacy_level="everyone", import_status="finished" + ) + url = reverse("api:v1:playlists-detail", kwargs={"pk": playlist.pk}) + response = logged_in_api_client.get(url) + + assert response.data["tracks_count"] == 1 + + def test_serializer_includes_is_playable(factories, logged_in_api_client): playlist = factories["playlists.Playlist"]() factories["playlists.PlaylistTrack"](playlist=playlist) diff --git a/changes/changelog.d/986.bugfix b/changes/changelog.d/986.bugfix new file mode 100644 index 000000000..b18d8ec8d --- /dev/null +++ b/changes/changelog.d/986.bugfix @@ -0,0 +1 @@ +Fixed invalid displayed number of tracks in playlist (#986)