summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models_imports.py59
-rw-r--r--ishtar_common/views_api.py2
-rw-r--r--ishtar_common/views_item.py2
3 files changed, 60 insertions, 3 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index 2553cde3f..80b13f312 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -520,10 +520,59 @@ class ImporterType(models.Model):
types.append(ctype)
return types
+ def _create_default_geo_type(self, geo_target):
+ geo_prefix = geo_target[:geo_target.index("geodata")]
+ default = ImporterDefault.objects.create(
+ importer_type=self,
+ target=geo_prefix + "geodata"
+ )
+ ImporterDefaultValues.objects.create(
+ default_target=default,
+ target="data_type",
+ value=self.gis_type.txt_idx,
+ )
+
+ def set_default_geo_data(self):
+ """
+ Set default geo data for QGIS Importer
+ """
+ if self.type != "qgs" or not self.gis_type:
+ return
+
+ # check key is not already created and with the good value
+ q = self.defaults.filter(target__contains="geodata")
+ if q.exists():
+ default = q.all()[0]
+ q = default.default_values.filter(target="data_type")
+ if not q.exists():
+ ImporterDefaultValues.objects.create(
+ default_target=default,
+ target="data_type",
+ value=self.gis_type.txt_idx,
+ )
+ return
+ default_value = q.all()[0]
+ if default_value.value != self.gis_type.txt_idx:
+ default_value.value = self.gis_type.txt_idx
+ default_value.save()
+ return
+
+ for column in self.columns.all():
+ q1 = column.targets.filter(target__contains='geodata')
+ if q1.exists():
+ target = q1.all()[0]
+ self._create_default_geo_type(target.target)
+ return
+ q2 = column.duplicate_fields.filter(field_name__contains='geodata')
+ if q2.exists():
+ duplicate = q2.all()[0]
+ self._create_default_geo_type(duplicate.field_name)
+
def save(self, *args, **kwargs):
if not self.slug:
self.slug = create_slug(ImporterType, self.name)
- return super().save(*args, **kwargs)
+ super().save(*args, **kwargs)
+ self.set_default_geo_data()
class ImporterGroup(models.Model):
@@ -890,6 +939,10 @@ class ImporterDuplicateField(models.Model):
def natural_key(self):
return self.column.importer_type.slug, self.column.col_number, self.field_name
+ def save(self, *args, **kwargs):
+ super().save(*args, **kwargs)
+ self.column.importer_type.set_default_geo_data()
+
class NamedManager(models.Manager):
def get_by_natural_key(self, name):
@@ -1032,6 +1085,10 @@ class ImportTarget(models.Model):
return []
return self.associated_model.get_types()
+ def save(self, *args, **kwargs):
+ super().save(*args, **kwargs)
+ self.column.importer_type.set_default_geo_data()
+
class TargetKeyGroup(models.Model):
"""
diff --git a/ishtar_common/views_api.py b/ishtar_common/views_api.py
index d6d4a602f..2b9ee5713 100644
--- a/ishtar_common/views_api.py
+++ b/ishtar_common/views_api.py
@@ -114,7 +114,7 @@ class GISExportAPI(GISBaseImportView, GISAPIView):
query = unquote_plus(request.GET["query"])
dct = {"query": query, "length": self.PAGE_LEN}
if page > 1:
- dct["start"] = (page - 1) * self.PAGE_LEN + 1
+ dct["start"] = (page - 1) * self.PAGE_LEN
try:
importer_class = importer.get_importer_class()
import_key = importer.get_gis_import_key()
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index af5fdb479..b96ab62e9 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -1916,7 +1916,7 @@ def _get_data_from_query(items, query_table_cols, extra_request_keys,
values.append("lock_user_id")
values = [v for v in values if v] # filter empty values
if q_slice:
- result = items[q_slice[0]:q_slice[1] + 1].values_list(*values)
+ result = items[q_slice[0]:q_slice[1]].values_list(*values)
else:
result = items.values_list(*values)
if not geo_import_key and not geo_type: