From 697ea24b794b1accb309c36e1ff51a42bacd6ccb Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Sun, 24 Jun 2018 14:33:58 +0200 Subject: [PATCH] Fix #302: Include user's current private playlists on playlist list --- api/funkwhale_api/common/fields.py | 6 +++--- api/funkwhale_api/playlists/views.py | 4 +++- api/tests/common/test_fields.py | 3 ++- changes/changelog.d/302.bugfix | 1 + 4 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 changes/changelog.d/302.bugfix diff --git a/api/funkwhale_api/common/fields.py b/api/funkwhale_api/common/fields.py index 190576ef..890aee42 100644 --- a/api/funkwhale_api/common/fields.py +++ b/api/funkwhale_api/common/fields.py @@ -17,13 +17,13 @@ def get_privacy_field(): ) -def privacy_level_query(user, lookup_field="privacy_level"): +def privacy_level_query(user, lookup_field="privacy_level", user_field="user"): if user.is_anonymous: return models.Q(**{lookup_field: "everyone"}) return models.Q( - **{"{}__in".format(lookup_field): ["followers", "instance", "everyone"]} - ) + **{"{}__in".format(lookup_field): ["instance", "everyone"]} + ) | models.Q(**{lookup_field: "me", user_field: user}) class SearchFilter(django_filters.CharFilter): diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index d5d19df7..21e35f50 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -110,7 +110,9 @@ class PlaylistTrackViewSet( def get_queryset(self): return self.queryset.filter( fields.privacy_level_query( - self.request.user, lookup_field="playlist__privacy_level" + self.request.user, + lookup_field="playlist__privacy_level", + user_field="playlist__user", ) ) diff --git a/api/tests/common/test_fields.py b/api/tests/common/test_fields.py index d2692314..72aa8b4c 100644 --- a/api/tests/common/test_fields.py +++ b/api/tests/common/test_fields.py @@ -12,7 +12,8 @@ from funkwhale_api.users.factories import UserFactory (AnonymousUser(), Q(privacy_level="everyone")), ( UserFactory.build(pk=1), - Q(privacy_level__in=["followers", "instance", "everyone"]), + Q(privacy_level__in=["instance", "everyone"]) + | Q(privacy_level="me", user=UserFactory.build(pk=1)), ), ], ) diff --git a/changes/changelog.d/302.bugfix b/changes/changelog.d/302.bugfix new file mode 100644 index 00000000..66c9dea0 --- /dev/null +++ b/changes/changelog.d/302.bugfix @@ -0,0 +1 @@ +Include user's current private playlists on playlist list (#302) -- GitLab