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