Capped number of tracks in playlists
This commit is contained in:
parent
d8486beeb0
commit
944135e752
|
@ -383,3 +383,6 @@ CACHEOPS = {
|
||||||
# Custom Admin URL, use {% url 'admin:index' %}
|
# Custom Admin URL, use {% url 'admin:index' %}
|
||||||
ADMIN_URL = env('DJANGO_ADMIN_URL', default='^api/admin/')
|
ADMIN_URL = env('DJANGO_ADMIN_URL', default='^api/admin/')
|
||||||
CSRF_USE_SESSIONS = True
|
CSRF_USE_SESSIONS = True
|
||||||
|
|
||||||
|
# Playlist settings
|
||||||
|
PLAYLISTS_MAX_TRACKS = env.int('PLAYLISTS_MAX_TRACKS', default=500)
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
from django.conf import settings
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from taggit.models import Tag
|
from taggit.models import Tag
|
||||||
|
|
||||||
|
@ -20,6 +21,14 @@ class PlaylistTrackCreateSerializer(serializers.ModelSerializer):
|
||||||
model = models.PlaylistTrack
|
model = models.PlaylistTrack
|
||||||
fields = ('id', 'track', 'playlist', 'position')
|
fields = ('id', 'track', 'playlist', 'position')
|
||||||
|
|
||||||
|
def validate_playlist(self, value):
|
||||||
|
existing = value.playlist_tracks.count()
|
||||||
|
if existing >= settings.PLAYLISTS_MAX_TRACKS:
|
||||||
|
raise serializers.ValidationError(
|
||||||
|
'Playlist has reached the maximum of {} tracks'.format(
|
||||||
|
settings.PLAYLISTS_MAX_TRACKS))
|
||||||
|
return value
|
||||||
|
|
||||||
|
|
||||||
class PlaylistSerializer(serializers.ModelSerializer):
|
class PlaylistSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
from funkwhale_api.playlists import serializers
|
||||||
|
|
||||||
|
|
||||||
|
def test_cannot_max_500_tracks_per_playlist(mocker, factories, settings):
|
||||||
|
settings.PLAYLISTS_MAX_TRACKS = 2
|
||||||
|
playlist = factories['playlists.Playlist']()
|
||||||
|
plts = factories['playlists.PlaylistTrack'].create_batch(
|
||||||
|
size=2, playlist=playlist)
|
||||||
|
track = factories['music.Track']()
|
||||||
|
serializer = serializers.PlaylistTrackCreateSerializer(data={
|
||||||
|
'playlist': playlist.pk,
|
||||||
|
'track': track.pk,
|
||||||
|
})
|
||||||
|
|
||||||
|
assert serializer.is_valid() is False
|
||||||
|
assert 'playlist' in serializer.errors
|
Loading…
Reference in New Issue