summaryrefslogtreecommitdiff
path: root/ishtar_common/models_imports.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r--ishtar_common/models_imports.py59
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):
"""