diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-05 17:24:58 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-12-12 12:23:20 +0100 |
commit | 06d5d3417077f5860e35625f5245b75e3a8c40d8 (patch) | |
tree | 315a7df8d3ed620a40fe4d74fe4b37fbf9437617 /ishtar_common/models_imports.py | |
parent | 24ca8234083c3fedef4747f669634a100e6872d9 (diff) | |
download | Ishtar-06d5d3417077f5860e35625f5245b75e3a8c40d8.tar.bz2 Ishtar-06d5d3417077f5860e35625f5245b75e3a8c40d8.zip |
Imports: manage defaults with "__"
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r-- | ishtar_common/models_imports.py | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py index e24d300cb..46d92c994 100644 --- a/ishtar_common/models_imports.py +++ b/ishtar_common/models_imports.py @@ -446,7 +446,7 @@ class ImporterDefault(models.Model): target = default_value.target if target == "-": target = "" - values[target] = default_value.get_value() + values[target.split("__")[0]] = default_value.get_value() return values @@ -488,15 +488,35 @@ class ImporterDefaultValues(models.Model): def get_value(self): parent_model = self.default_target.associated_model + target = self.target.strip() + return self._get_value(parent_model, target) + + def _get_value(self, parent_model, target): if not parent_model: return self.value fields = get_model_fields(parent_model) - target = self.target.strip() + if "__" in target: + targets = target.split("__") + if targets[0] not in fields: + return + new_target = "__".join(targets[1:]) + field = fields[targets[0]] + if not hasattr(field, "remote_field") or not hasattr( + field.remote_field, "model" + ): + return self.value + new_parent_model = field.remote_field.model + return self._get_value(new_parent_model, new_target) if target not in fields: return field = fields[target] + if target in ("srid", "txt_idx"): + try: + return parent_model.objects.get(**{target: self.value}) + except (ValueError, parent_model.DoesNotExist): + pass if not hasattr(field, "remote_field") or not hasattr( - field.remote_field, "model" + field.remote_field, "model" ): return self.value model = field.remote_field.model |