From 5408fe006dc00c95bf6fddf97ed7dc6099741566 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Tue, 9 Aug 2022 15:56:45 -0400
Subject: [PATCH] Fix HostSerializer, add missing fields & read-only fields -
 `HostLinkSerializer` is a `serializers.ModelSerializer` again.

---
 program/serializers.py | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/program/serializers.py b/program/serializers.py
index 5c882345..63cfa45a 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -167,9 +167,10 @@ class LinkSerializer(serializers.ModelSerializer):
         fields = ("description", "url")
 
 
-class HostLinkSerializer(LinkSerializer):
+class HostLinkSerializer(serializers.ModelSerializer):
     class Meta:
         model = HostLink
+        fields = ("description", "url")
 
 
 class HostSerializer(serializers.ModelSerializer):
@@ -194,6 +195,8 @@ class HostSerializer(serializers.ModelSerializer):
             "email",
             "biography",
             "is_active",
+            "links",
+            "thumbnails",
             # ModelWithImageFields
             "image",
             "image_ppoi",
@@ -207,11 +210,16 @@ class HostSerializer(serializers.ModelSerializer):
             "updated_at",
             "updated_by",
         )
+        read_only_fields = (
+            "created_at",
+            "created_by",
+            "updated_at",
+            "updated_by",
+        )
 
     def create(self, validated_data):
         links_data = validated_data.pop("links", [])
-        host = Host.objects.create(**validated_data)
-
+        host = Host.objects.create(**validated_data | self.context)
         for link_data in links_data:
             HostLink.objects.create(host=host, **link_data)
         host.save()
@@ -234,6 +242,7 @@ class HostSerializer(serializers.ModelSerializer):
         instance.image_alt_text = validated_data.get(
             "image_alt_text", instance.image_alt_text
         )
+        instance.updated_by = self.context.get("updated_by")
 
         if instance.links.count() > 0:
             for link in instance.links.all():
-- 
GitLab