diff --git a/program/serializers.py b/program/serializers.py index ddd1af1ecf123b3625cf1ee134a3f13a772accf4..5c88234560998503cb7989ca03ee638a999d67f4 100644 --- a/program/serializers.py +++ b/program/serializers.py @@ -201,6 +201,11 @@ class HostSerializer(serializers.ModelSerializer): "image_height", "image_credits", "image_alt_text", + # ModelWithCreatedUpdatedFields + "created_at", + "created_by", + "updated_at", + "updated_by", ) def create(self, validated_data): @@ -222,7 +227,13 @@ class HostSerializer(serializers.ModelSerializer): instance.email = validated_data.get("email", instance.email) instance.biography = validated_data.get("biography", instance.biography) instance.image = validated_data.get("image", instance.image) - instance.ppoi = validated_data.get("ppoi", instance.ppoi) + instance.image_ppoi = validated_data.get("image_ppoi", instance.image_ppoi) + instance.image_credits = validated_data.get( + "image_credits", instance.image_credits + ) + instance.image_alt_text = validated_data.get( + "image_alt_text", instance.image_alt_text + ) if instance.links.count() > 0: for link in instance.links.all(): @@ -340,6 +351,11 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): "image_height", "image_credits", "image_alt_text", + # ModelWithCreatedUpdatedFields + "created_at", + "created_by", + "updated_at", + "updated_by", ) def create(self, validated_data): @@ -379,7 +395,13 @@ class ShowSerializer(serializers.HyperlinkedModelSerializer): instance.name = validated_data.get("name", instance.name) instance.slug = validated_data.get("slug", instance.slug) instance.image = validated_data.get("image", instance.image) - instance.ppoi = validated_data.get("ppoi", instance.ppoi) + instance.image_ppoi = validated_data.get("image_ppoi", instance.image_ppoi) + instance.image_credits = validated_data.get( + "image_credits", instance.image_credits + ) + instance.image_alt_text = validated_data.get( + "image_alt_text", instance.image_alt_text + ) instance.logo = validated_data.get("logo", instance.logo) instance.short_description = validated_data.get( "short_description", instance.short_description @@ -618,9 +640,8 @@ class NoteLinkSerializer(LinkSerializer): class NoteSerializer(serializers.ModelSerializer): links = NoteLinkSerializer(many=True, required=False) - show = serializers.PrimaryKeyRelatedField(queryset=Show.objects.all()) timeslot = serializers.PrimaryKeyRelatedField(queryset=TimeSlot.objects.all()) - host = serializers.PrimaryKeyRelatedField(queryset=Host.objects.all()) + contributors = serializers.PrimaryKeyRelatedField(queryset=Host.objects.all()) thumbnails = serializers.SerializerMethodField() @staticmethod @@ -650,19 +671,28 @@ class NoteSerializer(serializers.ModelSerializer): "image", "image_ppoi", "image_width", - "image_height" "image_credits", + "image_height", + "image_credits", "image_alt_text", + # ModelWithCreatedUpdatedFields + "created_at", + "created_by", + "updated_at", + "updated_by", ) def create(self, validated_data): """Create and return a new Note instance, given the validated data.""" links_data = validated_data.pop("links", []) + contributors = validated_data.pop("contributors", []) - # Save the creator + # the creator of the note is the owner validated_data["owner"] = self.context["user_id"] note = Note.objects.create(**validated_data) + note.contributors.set(contributors) + if cba_id := validated_data.get("cba_id"): if audio_url := get_audio_url(cba_id): NoteLink.objects.create(note=note, description="CBA", url=audio_url) @@ -693,11 +723,19 @@ class NoteSerializer(serializers.ModelSerializer): instance.summary = validated_data.get("summary", instance.summary) instance.content = validated_data.get("content", instance.content) instance.image = validated_data.get("image", instance.image) - instance.ppoi = validated_data.get("ppoi", instance.ppoi) - instance.status = validated_data.get("status", instance.status) - instance.host = validated_data.get("host", instance.host) + instance.image_ppoi = validated_data.get("image_ppoi", instance.image_ppoi) + instance.image_credits = validated_data.get( + "image_credits", instance.image_credits + ) + instance.image_alt_text = validated_data.get( + "image_alt_text", instance.image_alt_text + ) instance.cba_id = validated_data.get("cba_id", instance.cba_id) + instance.contributors.set( + validated_data.get("contributors", instance.contributors) + ) + if instance.links.count() > 0: for link in instance.links.all(): link.delete(keep_parents=True)