diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/models_imports.py | 59 | ||||
| -rw-r--r-- | ishtar_common/views_api.py | 2 | ||||
| -rw-r--r-- | ishtar_common/views_item.py | 2 |
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: |
