From 71d46e4361a44c84b9bf8b4428727f4e9b157bd8 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Wed, 21 Mar 2018 19:03:57 +0100 Subject: [PATCH] Simplified playlist serializer and ensure update return same payload as detail --- api/funkwhale_api/playlists/serializers.py | 22 ++++------------------ api/funkwhale_api/playlists/views.py | 5 ----- api/tests/playlists/test_views.py | 13 +++++++++++++ 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/api/funkwhale_api/playlists/serializers.py b/api/funkwhale_api/playlists/serializers.py index 2f71c8239c..ebbbae0b07 100644 --- a/api/funkwhale_api/playlists/serializers.py +++ b/api/funkwhale_api/playlists/serializers.py @@ -62,34 +62,20 @@ class PlaylistTrackWriteSerializer(serializers.ModelSerializer): return [] -class PlaylistWriteSerializer(serializers.ModelSerializer): - - class Meta: - model = models.Playlist - fields = [ - 'id', - 'name', - 'privacy_level', - ] - - class PlaylistSerializer(serializers.ModelSerializer): - tracks_count = serializers.SerializerMethodField() - user = UserBasicSerializer() + tracks_count = serializers.SerializerMethodField(read_only=True) + user = UserBasicSerializer(read_only=True) class Meta: model = models.Playlist fields = ( 'id', 'name', - 'user', 'tracks_count', - 'privacy_level', - 'creation_date', - 'modification_date') + 'user', + 'privacy_level',) read_only_fields = [ 'id', - 'user', 'modification_date', 'creation_date',] diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 7b2e7651d3..683f903888 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -38,11 +38,6 @@ class PlaylistViewSet( filter_class = filters.PlaylistFilter ordering_fields = ('id', 'name', 'creation_date', 'modification_date') - def get_serializer_class(self): - if self.request.method in ['PUT', 'PATCH', 'DELETE', 'POST']: - return serializers.PlaylistWriteSerializer - return self.serializer_class - @detail_route(methods=['get']) def tracks(self, request, *args, **kwargs): playlist = self.get_object() diff --git a/api/tests/playlists/test_views.py b/api/tests/playlists/test_views.py index e70fef6f0d..5bf8348885 100644 --- a/api/tests/playlists/test_views.py +++ b/api/tests/playlists/test_views.py @@ -182,3 +182,16 @@ def test_can_clear_playlist_from_api( assert response.status_code == 204 assert playlist.playlist_tracks.count() == 0 + + +def test_update_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-detail', kwargs={'pk': playlist.pk}) + response = logged_in_api_client.patch(url, {'name': 'test'}) + playlist.refresh_from_db() + + assert response.status_code == 200 + assert response.data['user']['username'] == playlist.user.username -- GitLab