diff options
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r-- | ishtar_common/models_imports.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index 33d793333..dfd2b0a90 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -149,6 +149,17 @@ IMPORT_TYPES = ( IMPORT_TYPES_DICT = dict(IMPORT_TYPES) +SPECIFIC_TYPES_COLUMNS = { + "point_2d": "Point2D", + "point_3d": "Point3D", + "multi_points": "MultiPoints", + "multi_line": "MultiLine", + "multi_polygon": "MultiPolygon", + "x": "X", + "y": "Y", + "z": "Z", +} + class ImporterType(models.Model): """ @@ -455,6 +466,30 @@ class ImporterType(models.Model): col_names.append(formater.label) return cols, col_names + def get_columns_types(self, importer_class=None): + """ + :param importer_class: importer class - if not provided get from self + :return: (list): return list of column types - each types is a string + """ + if not importer_class: + importer_class = self.get_importer_class() + types = [] + for formater in importer_class.LINE_EXPORT_FORMAT: + if not formater: + types.append("") + continue + + ctype = "" + field_name = formater.field_name[0] + for k in SPECIFIC_TYPES_COLUMNS: + if field_name == k or field_name.endswith(f"__{k}"): + ctype = SPECIFIC_TYPES_COLUMNS[k] + break + if not ctype: + ctype = str(formater.formater[0]) + types.append(ctype) + return types + def save(self, *args, **kwargs): if not self.slug: self.slug = create_slug(ImporterType, self.name) |