diff options
-rw-r--r-- | changelog/en/changelog_2022-06-15.md | 1 | ||||
-rw-r--r-- | changelog/fr/changelog_2023-01-25.md | 1 | ||||
-rw-r--r-- | ishtar_common/models_common.py | 14 | ||||
-rw-r--r-- | ishtar_common/rest.py | 2 |
4 files changed, 10 insertions, 8 deletions
diff --git a/changelog/en/changelog_2022-06-15.md b/changelog/en/changelog_2022-06-15.md index e4f2b2631..b50c14633 100644 --- a/changelog/en/changelog_2022-06-15.md +++ b/changelog/en/changelog_2022-06-15.md @@ -5,6 +5,7 @@ v4.0.58 - 2023-09-25 - Federation: - instead of deleting excluded fields, set them to null - distant sheets: add missing default permission check + - absolute URL for ressources v4.0.57 - 2023-09-13 -------------------- diff --git a/changelog/fr/changelog_2023-01-25.md b/changelog/fr/changelog_2023-01-25.md index aff53f878..e0aa7fb48 100644 --- a/changelog/fr/changelog_2023-01-25.md +++ b/changelog/fr/changelog_2023-01-25.md @@ -5,6 +5,7 @@ v4.0.58 - 2023-09-25 - Fédération : - au lieu de supprimer les champs exclus, leur attribuer la valeur vide - fiches distances : ajout de permissions par défaut manquantes + - URL absolue pour les ressources v4.0.57 - 2023-09-13 -------------------- diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 4ab97cf58..2074aa523 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -2469,7 +2469,7 @@ class GeoVectorData(Imported, OwnPerms): SERIALIZE_EXCLUDE = [] - def full_serialize(self, search_model, recursion=False): + def full_serialize(self, search_model, recursion=False, request=None): dct = {} fields = [ "id", @@ -3134,7 +3134,7 @@ class SerializeItem: SERIALIZATION_FILES = [] SERIALIZE_STRING = [] - def full_serialize(self, search_model=None, recursion=False) -> dict: + def full_serialize(self, search_model=None, recursion=False, request=None) -> dict: """ API serialization :return: data dict @@ -3172,10 +3172,10 @@ class SerializeItem: # print(field.name, self.__class__, self) if field_name == "main_geodata" and no_geodata: continue - value = value.full_serialize(search_model, recursion=True) + value = value.full_serialize(search_model, recursion=True, request=request) elif field_name in self.SERIALIZATION_FILES: try: - value = {"url": value.url} + value = {"url": request.build_absolute_uri(value.url)} except ValueError: value = None else: @@ -3196,7 +3196,7 @@ class SerializeItem: ): # print(field.name, self.__class__, self) values = [ - v.full_serialize(search_model, recursion=True) + v.full_serialize(search_model, recursion=True, request=request) for v in values.all() ] else: @@ -3204,7 +3204,7 @@ class SerializeItem: values = [] for v in values: try: - values.append({"url": v.url}) + values.append({"url": request.build_absolute_uri(v.url)}) except ValueError: pass else: @@ -3216,7 +3216,7 @@ class SerializeItem: if field_name in self.SERIALIZATION_FILES: value = getattr(self, field_name) try: - value = {"url": value.url} + value = {"url": request.build_absolute_uri(value.url)} except ValueError: value = None full_result[field.name] = value diff --git a/ishtar_common/rest.py b/ishtar_common/rest.py index 08fc2dc36..0a831634a 100644 --- a/ishtar_common/rest.py +++ b/ishtar_common/rest.py @@ -256,5 +256,5 @@ class GetAPIView(generics.RetrieveAPIView): if not q.count(): return Response({}, content_type="json") obj = q.all()[0] - result = obj.full_serialize(search_model) + result = obj.full_serialize(search_model, request=request) return Response(result, content_type="json") |