From f38c6a846e99a43bce4b043559ae6df20fff9415 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Mon, 8 Aug 2022 11:07:11 -0400
Subject: [PATCH] Add created_{at,by}, updated_{at,by} to serializers - fixed
 image field names, - removed fields that are no longer used

---
 program/serializers.py | 56 +++++++++++++++++++++++++++++++++++-------
 1 file changed, 47 insertions(+), 9 deletions(-)

diff --git a/program/serializers.py b/program/serializers.py
index ddd1af1e..5c882345 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)
-- 
GitLab