From c7a3dd9da59b0b3ad956f4f00c9b5b291626c6a6 Mon Sep 17 00:00:00 2001 From: Agate Date: Thu, 7 May 2020 13:51:29 +0200 Subject: [PATCH] Fix #1011: Ensure tracks linked to skipped upload can be pruned --- api/funkwhale_api/music/tasks.py | 10 ++++++++-- api/tests/music/test_tasks.py | 2 ++ changes/changelog.d/1011.bugfix | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 changes/changelog.d/1011.bugfix diff --git a/api/funkwhale_api/music/tasks.py b/api/funkwhale_api/music/tasks.py index 722a9eefb..de2d00315 100644 --- a/api/funkwhale_api/music/tasks.py +++ b/api/funkwhale_api/music/tasks.py @@ -817,9 +817,15 @@ def get_prunable_tracks( Returns a list of tracks with no associated uploads, excluding the one that were listened/favorited/included in playlists. """ - + purgeable_tracks_with_upload = ( + models.Upload.objects.exclude(track=None) + .filter(import_status="skipped") + .values("track") + ) queryset = models.Track.objects.all() - queryset = queryset.filter(uploads__isnull=True) + queryset = queryset.filter( + Q(uploads__isnull=True) | Q(pk__in=purgeable_tracks_with_upload) + ) if exclude_favorites: queryset = queryset.filter(track_favorites__isnull=True) if exclude_playlists: diff --git a/api/tests/music/test_tasks.py b/api/tests/music/test_tasks.py index 96ba451aa..989382d79 100644 --- a/api/tests/music/test_tasks.py +++ b/api/tests/music/test_tasks.py @@ -867,6 +867,8 @@ def test_clean_transcoding_cache(preferences, now, factories): def test_get_prunable_tracks(factories): prunable_track = factories["music.Track"]() + # track is still prunable if it has a skipped upload linked to it + factories["music.Upload"](import_status="skipped", track=prunable_track) # non prunable tracks factories["music.Upload"]() factories["favorites.TrackFavorite"]() diff --git a/changes/changelog.d/1011.bugfix b/changes/changelog.d/1011.bugfix new file mode 100644 index 000000000..0b52c0e6e --- /dev/null +++ b/changes/changelog.d/1011.bugfix @@ -0,0 +1 @@ +Ensure tracks linked to skipped upload can be pruned (#1011)