diff --git a/program/serializers.py b/program/serializers.py index 726a22d4894302e633ec3497cba18de052aa2ce8..bf71dee7646b6df5d1a5e38ec14fd2c874d101fd 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -1508,3 +1508,22 @@ class PlaylistSerializer(serializers.ModelSerializer): "playout_mode", "show_id", ) + read_only_fields + + def create(self, validated_data): + """Create a new Playlist instance, given the validated data.""" + + user = self.context["request"].user + user_is_owner = user in validated_data.get("show").owners.all() + + # having the create_playlist permission overrules the ownership + if not (user.has_perm("program.create_playlist") or user_is_owner): + raise exceptions.PermissionDenied(detail="You are not allowed to create a playlist.") + + entries = validated_data.pop("entries", []) + + playlist = Playlist.objects.create(created_by=user.username, **validated_data) + + for entry_data in entries: + PlaylistEntry.objects.create(playlist=playlist, **entry_data) + + return playlist