summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2023-09-25 19:32:03 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2023-09-25 19:36:50 +0200
commit4a86ab7600a5e21564c28acc0c3d87aa987850d8 (patch)
tree634f96b84060d5303745e4cf151d3cebba9a221f
parent594c025a3f66c699f4b2a7add12781b7b6ad03e7 (diff)
downloadIshtar-4a86ab7600a5e21564c28acc0c3d87aa987850d8.tar.bz2
Ishtar-4a86ab7600a5e21564c28acc0c3d87aa987850d8.zip
🐛 Federation: put absolute url for ressources
-rw-r--r--changelog/en/changelog_2022-06-15.md1
-rw-r--r--changelog/fr/changelog_2023-01-25.md1
-rw-r--r--ishtar_common/models_common.py14
-rw-r--r--ishtar_common/rest.py2
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")