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