From e19fbf543605542628a60cb0ce74e720b19a84be Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Sat, 7 Apr 2018 16:26:07 +0200
Subject: [PATCH] Exclude federated files from library endpoint

---
 api/funkwhale_api/federation/views.py |  2 +-
 api/tests/federation/test_views.py    | 12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/api/funkwhale_api/federation/views.py b/api/funkwhale_api/federation/views.py
index 35d8a75a5..da2b193a2 100644
--- a/api/funkwhale_api/federation/views.py
+++ b/api/funkwhale_api/federation/views.py
@@ -121,7 +121,7 @@ class MusicFilesViewSet(FederationMixin, viewsets.GenericViewSet):
         qs = TrackFile.objects.order_by('-creation_date').select_related(
             'track__artist',
             'track__album__artist'
-        )
+        ).filter(library_track__isnull=True)
         if page is None:
             conf = {
                 'id': utils.full_url(reverse('federation:music:files-list')),
diff --git a/api/tests/federation/test_views.py b/api/tests/federation/test_views.py
index c26810dad..c5d651dce 100644
--- a/api/tests/federation/test_views.py
+++ b/api/tests/federation/test_views.py
@@ -116,6 +116,18 @@ def test_audio_file_list_actor_page(
     assert response.status_code == 200
     assert response.data == expected
 
+def test_audio_file_list_actor_page_exclude_federated_files(
+        db, settings, api_client, factories):
+    settings.FEDERATION_MUSIC_NEEDS_APPROVAL = False
+    library = actors.SYSTEM_ACTORS['library'].get_actor_instance()
+    tfs = factories['music.TrackFile'].create_batch(size=5, federation=True)
+
+    url = reverse('federation:music:files-list')
+    response = api_client.get(url)
+
+    assert response.status_code == 200
+    assert response.data['totalItems'] == 0
+
 
 def test_audio_file_list_actor_page_error(
         db, settings, api_client, factories):
-- 
GitLab