From 9083b76f1d91a5b7dbca272c796120b7f2ff5327 Mon Sep 17 00:00:00 2001
From: Ernesto Rico Schmidt <ernesto@helsinki.at>
Date: Fri, 22 Mar 2024 17:56:46 -0400
Subject: [PATCH] feat: expose the image URL as `url` to avoid mixed-content
 media warnings

---
 program/serializers.py | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/program/serializers.py b/program/serializers.py
index fb41a215..04db8b51 100644
--- a/program/serializers.py
+++ b/program/serializers.py
@@ -265,6 +265,7 @@ class ImageSerializer(serializers.ModelSerializer):
     )
     ppoi = PPOIField(required=False)
     thumbnails = serializers.SerializerMethodField()
+    url = serializers.SerializerMethodField()
 
     @staticmethod
     def get_thumbnails(instance) -> List[Thumbnail]:
@@ -284,12 +285,22 @@ class ImageSerializer(serializers.ModelSerializer):
 
         return thumbnails
 
+    @staticmethod
+    def get_url(instance: Image) -> str:
+        """Returns the image URL, using settings.SITE_URL to include the protocol and avoid mixed
+        media warnings."""
+
+        return f"{settings.SITE_URL}{instance.image.url}"
+
     class Meta:
+        # TODO: make `image` a write-only field once dashboard is updated to read from `url`
+        # extra_kwargs = {"image": {"write_only": True}}
         model = Image
         read_only_fields = (
             "height",
             "id",
             "thumbnails",
+            "url",
             "width",
         )
         fields = (
-- 
GitLab