From 29354c129e56e7e102e55ece1916eedb78abd672 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Mon, 4 Nov 2024 12:44:14 -0400 Subject: [PATCH] feat: add create method to PlaylistSerializer --- program/serializers.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/program/serializers.py b/program/serializers.py index 726a22d4..bf71dee7 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 -- GitLab