Simplified playlist serializer and ensure update return same payload as detail
This commit is contained in:
parent
6a9a34d244
commit
71d46e4361
|
@ -62,34 +62,20 @@ class PlaylistTrackWriteSerializer(serializers.ModelSerializer):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
class PlaylistWriteSerializer(serializers.ModelSerializer):
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = models.Playlist
|
|
||||||
fields = [
|
|
||||||
'id',
|
|
||||||
'name',
|
|
||||||
'privacy_level',
|
|
||||||
]
|
|
||||||
|
|
||||||
|
|
||||||
class PlaylistSerializer(serializers.ModelSerializer):
|
class PlaylistSerializer(serializers.ModelSerializer):
|
||||||
tracks_count = serializers.SerializerMethodField()
|
tracks_count = serializers.SerializerMethodField(read_only=True)
|
||||||
user = UserBasicSerializer()
|
user = UserBasicSerializer(read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Playlist
|
model = models.Playlist
|
||||||
fields = (
|
fields = (
|
||||||
'id',
|
'id',
|
||||||
'name',
|
'name',
|
||||||
'user',
|
|
||||||
'tracks_count',
|
'tracks_count',
|
||||||
'privacy_level',
|
'user',
|
||||||
'creation_date',
|
'privacy_level',)
|
||||||
'modification_date')
|
|
||||||
read_only_fields = [
|
read_only_fields = [
|
||||||
'id',
|
'id',
|
||||||
'user',
|
|
||||||
'modification_date',
|
'modification_date',
|
||||||
'creation_date',]
|
'creation_date',]
|
||||||
|
|
||||||
|
|
|
@ -38,11 +38,6 @@ class PlaylistViewSet(
|
||||||
filter_class = filters.PlaylistFilter
|
filter_class = filters.PlaylistFilter
|
||||||
ordering_fields = ('id', 'name', 'creation_date', 'modification_date')
|
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'])
|
@detail_route(methods=['get'])
|
||||||
def tracks(self, request, *args, **kwargs):
|
def tracks(self, request, *args, **kwargs):
|
||||||
playlist = self.get_object()
|
playlist = self.get_object()
|
||||||
|
|
|
@ -182,3 +182,16 @@ def test_can_clear_playlist_from_api(
|
||||||
|
|
||||||
assert response.status_code == 204
|
assert response.status_code == 204
|
||||||
assert playlist.playlist_tracks.count() == 0
|
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
|
||||||
|
|
Loading…
Reference in New Issue