From cae8d2d69e92de319445e3be3df2e0ecaa6dba09 Mon Sep 17 00:00:00 2001 From: Tinashe <70011086+tinashechiraya@users.noreply.github.com> Date: Wed, 14 Aug 2024 16:53:04 +0200 Subject: [PATCH] patch: add request object to the context (#1068) * patch: add request object to the context * patch: use request.build absolute uri --- django_project/monitor/serializers.py | 18 ++++++++---------- django_project/monitor/site_views.py | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/django_project/monitor/serializers.py b/django_project/monitor/serializers.py index 24724d152..4c4b3117d 100644 --- a/django_project/monitor/serializers.py +++ b/django_project/monitor/serializers.py @@ -7,10 +7,8 @@ ObservationPestImage, Sites, SiteImage, - Assessment, - Pest + Assessment ) -from django.contrib.sites.models import Site class ObservationsAllFieldsSerializer(serializers.ModelSerializer): @@ -216,13 +214,13 @@ def get_collector_name(self, obj): def get_images(self, obj: Observations): """Return images of observation with full URL paths.""" - domain = Site.objects.get_current().domain + request = self.context.get('request') 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"]}' + if 'image' in image and request: + image['image'] = request.build_absolute_uri(image['image']) return serialized_images @@ -244,13 +242,13 @@ class SitesAndObservationsSerializer(serializers.ModelSerializer): def get_images(self, obj: Sites): """Return images of site with full URL paths.""" - domain = Site.objects.get_current().domain + request = self.context.get('request') 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"]}' + if 'image' in image and request: + image['image'] = request.build_absolute_uri(image['image']) return serialized_images @@ -268,7 +266,7 @@ class Meta: def get_observations(self, obj): observations = Observations.objects.filter(site=obj).order_by('-obs_date', '-gid') - return ObservationsDataOnlySerializer(observations, many=True).data + return ObservationsDataOnlySerializer(observations, many=True, context=self.context).data def to_representation(self, instance): data = super().to_representation(instance) diff --git a/django_project/monitor/site_views.py b/django_project/monitor/site_views.py index 2efa02c64..5f9bcef1f 100644 --- a/django_project/monitor/site_views.py +++ b/django_project/monitor/site_views.py @@ -211,5 +211,5 @@ def get(self, request): else: sites = Sites.objects.all() - serializer = self.serializer_class(sites, many=True) + serializer = self.serializer_class(sites, many=True, context={'request': request}) return Response(serializer.data, status=status.HTTP_200_OK)