diff --git a/api/funkwhale_api/playlists/views.py b/api/funkwhale_api/playlists/views.py index 1a88d231e46c63d865554f56b40128a24b9edac4..f78b5b8016258f5ed018ac00aace509c4501f9e9 100644 --- a/api/funkwhale_api/playlists/views.py +++ b/api/funkwhale_api/playlists/views.py @@ -32,7 +32,12 @@ class PlaylistViewSet( return self.queryset.filter(user=self.request.user) def perform_create(self, serializer): - return serializer.save(user=self.request.user) + return serializer.save( + user=self.request.user, + privacy_level=serializer.validated_data.get( + 'privacy_level', self.request.user.privacy_level) + + ) class PlaylistTrackViewSet( diff --git a/api/tests/playlists/test_views.py b/api/tests/playlists/test_views.py index 943de03e11728631b693312dba46d34d56016123..f3084e6a06b93121fd7f9c696d446543b6d2b0e9 100644 --- a/api/tests/playlists/test_views.py +++ b/api/tests/playlists/test_views.py @@ -7,27 +7,44 @@ from funkwhale_api.playlists import models from funkwhale_api.playlists.serializers import PlaylistSerializer -def test_can_create_playlist_via_api(logged_in_client): +def test_can_create_playlist_via_api(logged_in_api_client): url = reverse('api:v1:playlists-list') data = { 'name': 'test', + 'privacy_level': 'everyone' } - response = logged_in_client.post(url, data) + response = logged_in_api_client.post(url, data) - playlist = logged_in_client.user.playlists.latest('id') + playlist = logged_in_api_client.user.playlists.latest('id') assert playlist.name == 'test' + assert playlist.privacy_level == 'everyone' -def test_can_add_playlist_track_via_api(factories, logged_in_client): +def test_playlist_inherits_user_privacy(logged_in_api_client): + url = reverse('api:v1:playlists-list') + user = logged_in_api_client.user + user.privacy_level = 'me' + user.save() + + data = { + 'name': 'test', + } + + response = logged_in_api_client.post(url, data) + playlist = user.playlists.latest('id') + assert playlist.privacy_level == user.privacy_level + + +def test_can_add_playlist_track_via_api(factories, logged_in_api_client): tracks = factories['music.Track'].create_batch(5) - playlist = factories['playlists.Playlist'](user=logged_in_client.user) + playlist = factories['playlists.Playlist'](user=logged_in_api_client.user) url = reverse('api:v1:playlist-tracks-list') data = { 'playlist': playlist.pk, 'track': tracks[0].pk } - response = logged_in_client.post(url, data) - plts = logged_in_client.user.playlists.latest('id').playlist_tracks.all() + response = logged_in_api_client.post(url, data) + plts = logged_in_api_client.user.playlists.latest('id').playlist_tracks.all() assert plts.first().track == tracks[0]