Simplified playlist serializer and ensure update return same payload as detail

This commit is contained in:
Eliot Berriot 2018-03-21 19:03:57 +01:00
parent 6a9a34d244
commit 71d46e4361
No known key found for this signature in database
GPG Key ID: DD6965E2476E5C27
3 changed files with 17 additions and 23 deletions

View File

@ -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',]

View File

@ -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()

View File

@ -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