From dde4ad5229aa862ea7cd82ec65824877ff77d474 Mon Sep 17 00:00:00 2001 From: Tinashe <70011086+tinashechiraya@users.noreply.github.com> Date: Fri, 2 Aug 2024 14:24:35 +0200 Subject: [PATCH] patch: construct full url path for site and observation images (#1067) * patch: construct full url path for site and observation images * patch: construct full url for site and observation images --- django_project/monitor/serializers.py | 29 +++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/django_project/monitor/serializers.py b/django_project/monitor/serializers.py index 3ec2e9396..24724d152 100644 --- a/django_project/monitor/serializers.py +++ b/django_project/monitor/serializers.py @@ -10,6 +10,7 @@ Assessment, Pest ) +from django.contrib.sites.models import Site class ObservationsAllFieldsSerializer(serializers.ModelSerializer): @@ -214,10 +215,16 @@ def get_collector_name(self, obj): ) def get_images(self, obj: Observations): - """Return images of site.""" - return ObservationPestImageSerializer( - obj.observationpestimage_set.all().order_by('pest__name', '-id'), many=True - ).data + """Return images of observation with full URL paths.""" + domain = Site.objects.get_current().domain + images = obj.observationpestimage_set.all().order_by('pest__name', '-id') + serialized_images = ObservationPestImageSerializer(images, many=True).data + + for image in serialized_images: + if 'image' in image: + image['image'] = f'https://{domain}{image["image"]}' + + return serialized_images comment = serializers.CharField(allow_blank=True, default='') @@ -236,10 +243,16 @@ class SitesAndObservationsSerializer(serializers.ModelSerializer): images = serializers.SerializerMethodField() def get_images(self, obj: Sites): - """Return images of site.""" - return SiteImageSerializer( - obj.siteimage_set.all(), many=True - ).data + """Return images of site with full URL paths.""" + domain = Site.objects.get_current().domain + images = obj.siteimage_set.all() + serialized_images = SiteImageSerializer(images, many=True).data + + for image in serialized_images: + if 'image' in image: + image['image'] = f'https://{domain}{image["image"]}' + + return serialized_images class Meta: model = Sites