diff options
| -rw-r--r-- | ishtar_common/models_imports.py | 59 |
1 files changed, 58 insertions, 1 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): """ |
