From 6c891074cb33d033b06e4cd39d6f65cf87eb9c1b Mon Sep 17 00:00:00 2001 From: juuso-j Date: Tue, 18 Jul 2023 10:18:54 +0300 Subject: [PATCH] Add support for unit_include with multiple units --- services/api.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/services/api.py b/services/api.py index d37244eba..244d7d3eb 100644 --- a/services/api.py +++ b/services/api.py @@ -1147,13 +1147,13 @@ def list(self, request, *args, **kwargs): class AdministrativeDivisionSerializer(munigeo_api.AdministrativeDivisionSerializer): def to_representation(self, obj): ret = super(AdministrativeDivisionSerializer, self).to_representation(obj) - if "request" not in self.context: return ret query_params = self.context["request"].query_params unit_include = query_params.get("unit_include", None) service_point_id = ret["service_point_id"] + if service_point_id and unit_include: try: unit = Unit.objects.get(id=service_point_id) @@ -1167,6 +1167,19 @@ def to_representation(self, obj): ser = UnitSerializer(unit, context={"only": unit_include.split(",")}) ret["unit"] = ser.data + unit_ids = ret["units"] + if unit_ids and unit_include: + units = Unit.objects.filter(id__in=unit_ids) + if units: + units_data = [] + for unit in units: + units_data.append( + UnitSerializer( + unit, context={"only": unit_include.split(",")} + ).data + ) + ret["units"] = units_data + include_fields = query_params.get("include", []) if "centroid" in include_fields and obj.geometry: centroid = obj.geometry.boundary.centroid