summaryrefslogtreecommitdiff
path: root/ishtar_common/models_common.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-22 12:29:13 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-12-22 12:29:13 +0100
commitf8019467a2ee1d8db4ddbf4bdc405eb842be34cd (patch)
treec501998cd5cb895312e65885f5f7e8b036e0a167 /ishtar_common/models_common.py
parent0e3516888f43c1718b671a286140811c63954e2b (diff)
downloadIshtar-f8019467a2ee1d8db4ddbf4bdc405eb842be34cd.tar.bz2
Ishtar-f8019467a2ee1d8db4ddbf4bdc405eb842be34cd.zip
Syndication - sheet: manage geodata
Diffstat (limited to 'ishtar_common/models_common.py')
-rw-r--r--ishtar_common/models_common.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index feef29414..5e6e3af8f 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -2236,6 +2236,31 @@ class GeoVectorData(Imported, OwnPerms):
model.objects.filter(sub_q).values_list("id", flat=True)
)
+ SERIALIZE_EXCLUDE = []
+
+ def full_serialize(self, search_model, recursion=False):
+ dct = {}
+ fields = [
+ "id",
+ "buffer",
+ "buffer_type",
+ "name",
+ "origin",
+ "data_type",
+ "provider",
+ "comment",
+ "spatial_reference_system",
+ "source",
+ "estimated_error_x",
+ "estimated_error_y",
+ "estimated_error_z",
+ ]
+ for field_name in fields:
+ value = getattr(self, field_name)
+ dct[field_name] = str(value) if value else ""
+ dct["geojson"] = self.geojson
+ return dct
+
@classmethod
def get_query_owns(cls, ishtaruser):
q = None
@@ -4081,6 +4106,13 @@ class SerializeItem:
exclude = []
if search_model:
exclude = [sf.key for sf in search_model.sheet_filters.distinct().all()]
+
+ no_geodata = False
+ for prop in ("main_geodata", "geodata", "geodata_list"):
+ if prop in self.SERIALIZE_EXCLUDE or prop in exclude:
+ no_geodata = True
+ break
+
for field in self._meta.get_fields():
field_name = field.name
if field_name in self.SERIALIZE_EXCLUDE or field_name in exclude:
@@ -4097,6 +4129,8 @@ class SerializeItem:
and not recursion
):
# print(field.name, self.__class__, self)
+ if field_name == "main_geodata" and no_geodata:
+ continue
value = value.full_serialize(search_model, recursion=True)
elif field_name in self.SERIALIZATION_FILES:
try:
@@ -4108,6 +4142,8 @@ class SerializeItem:
else:
value = None
full_result[field_name] = value
+ if field_name == "main_geodata":
+ full_result["geodata_list"] = [value]
elif field.many_to_many:
values = getattr(self, field_name)
if values.count():