diff --git a/api/funkwhale_api/common/fields.py b/api/funkwhale_api/common/fields.py index 190576efa688db2d5d9748841791b76531749136..890aee42566ffd7883857f90ac1a7ec70f19358b 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 d5d19df74b66289c0230c38633dc591c19200bb1..21e35f50a8c711fa2a7cdee401d8eba7b9986023 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 d2692314854c3c6761974789ed82f96132beb9dd..72aa8b4c35601e87555843a843566369c61e2375 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 0000000000000000000000000000000000000000..66c9dea0bda54fe500a73ffc469f3056ed31df02 --- /dev/null +++ b/changes/changelog.d/302.bugfix @@ -0,0 +1 @@ +Include user's current private playlists on playlist list (#302)