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.py26
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