diff --git a/program/serializers.py b/program/serializers.py index 9f5ad200f498a43d4fb1d7f5c5635462df089d1c..87b1e0f54ef2e26f212e8c2fe27584c7c34ae649 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -30,6 +30,7 @@ from rest_framework.permissions import exceptions from django.conf import settings from django.contrib.auth.models import User from django.core.exceptions import ObjectDoesNotExist +from django.db import IntegrityError from django.db.models import Q from django.utils import text, timezone from program.models import ( @@ -1524,7 +1525,13 @@ class PlaylistSerializer(serializers.ModelSerializer): playlist = Playlist.objects.create(created_by=user.username, **validated_data) for entry_data in entries: - PlaylistEntry.objects.create(playlist=playlist, **entry_data) + try: + PlaylistEntry.objects.create(playlist=playlist, **entry_data) + except IntegrityError: + raise exceptions.ValidationError( + code="playlist-entry-file-id-or-uri", + detail="playlist entries must either have file id or uri.", + ) return playlist @@ -1552,7 +1559,13 @@ class PlaylistSerializer(serializers.ModelSerializer): entry.delete(keep_parents=True) for entry_data in validated_data.get("entries"): - PlaylistEntry.objects.create(playlist=instance, **entry_data) + try: + PlaylistEntry.objects.create(playlist=instance, **entry_data) + except IntegrityError: + raise exceptions.ValidationError( + code="playlist-entry-file-id-or-uri", + detail="playlist entries must either have file id or uri.", + ) instance.save()