From 6a9a34d244ddc4c4298e5c5364bb214f420691cf Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Wed, 21 Mar 2018 12:19:07 +0100 Subject: [PATCH] Can now clear playlist --- api/funkwhale_api/playlists/views.py | 8 ++++++ api/tests/playlists/test_views.py | 12 ++++++++ .../src/components/common/DangerousButton.vue | 10 +++++-- front/src/components/playlists/Editor.vue | 28 +++++++++++++++++-- 4 files changed, 52 insertions(+), 6 deletions(-) diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 4880b1886..7b2e7651d 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -75,6 +75,14 @@ class PlaylistViewSet( } return Response(data, status=201) + @detail_route(methods=['delete']) + @transaction.atomic + def clear(self, request, *args, **kwargs): + playlist = self.get_object() + playlist.playlist_tracks.all().delete() + playlist.save(update_fields=['modification_date']) + return Response(status=204) + def get_queryset(self): return self.queryset.filter( fields.privacy_level_query(self.request.user)) diff --git a/api/tests/playlists/test_views.py b/api/tests/playlists/test_views.py index ae3fd0074..e70fef6f0 100644 --- a/api/tests/playlists/test_views.py +++ b/api/tests/playlists/test_views.py @@ -170,3 +170,15 @@ def test_can_add_multiple_tracks_at_once_via_api( for plt in playlist.playlist_tracks.order_by('index'): assert response.data['results'][plt.index]['id'] == plt.id assert plt.track == tracks[plt.index] + + +def test_can_clear_playlist_from_api( + factories, mocker, logged_in_api_client): + playlist = factories['playlists.Playlist'](user=logged_in_api_client.user) + plts = factories['playlists.PlaylistTrack'].create_batch( + size=5, playlist=playlist) + url = reverse('api:v1:playlists-clear', kwargs={'pk': playlist.pk}) + response = logged_in_api_client.delete(url) + + assert response.status_code == 204 + assert playlist.playlist_tracks.count() == 0 diff --git a/front/src/components/common/DangerousButton.vue b/front/src/components/common/DangerousButton.vue index 03a579d29..525b4c48f 100644 --- a/front/src/components/common/DangerousButton.vue +++ b/front/src/components/common/DangerousButton.vue @@ -1,5 +1,5 @@