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/version.py4
-rw-r--r--ishtar_common/views_api.py8
3 files changed, 68 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/version.py b/ishtar_common/version.py
index 2d5081778..8717ffa3a 100644
--- a/ishtar_common/version.py
+++ b/ishtar_common/version.py
@@ -1,5 +1,5 @@
-# 4.99.7
-VERSION = (4, 99, 7)
+# 4.99.8
+VERSION = (4, 99, 8)
def get_version():
diff --git a/ishtar_common/views_api.py b/ishtar_common/views_api.py
index 2b9ee5713..c98f92dbb 100644
--- a/ishtar_common/views_api.py
+++ b/ishtar_common/views_api.py
@@ -35,6 +35,7 @@ from ishtar_common.views_item import get_item
class ImporterTypeSerializer(serializers.ModelSerializer):
+ name = serializers.SerializerMethodField()
model = serializers.SerializerMethodField()
unicity_keys = serializers.SerializerMethodField()
@@ -43,6 +44,13 @@ class ImporterTypeSerializer(serializers.ModelSerializer):
fields = ['slug', 'name', 'description', 'is_import', 'is_template', 'model',
'unicity_keys']
+ def get_name(self, obj):
+ name = ""
+ if obj.gis_type:
+ name = f"{obj.gis_type.label} | "
+ name += obj.name
+ return name
+
def get_model(self, obj):
if not obj.associated_models:
return ""