summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/data_importer.py8
-rw-r--r--ishtar_common/models_imports.py13
2 files changed, 17 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index d44a19319..baf943068 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -1574,6 +1574,9 @@ class Importer(object):
if attribute == 'data': # json field
# no need to do anything
return
+ if attribute == 'get_default':
+ # force evaluation of default value for this field
+ return
try:
field_object = cls._meta.get_field(attribute)
except FieldDoesNotExist:
@@ -1720,6 +1723,11 @@ class Importer(object):
defaults[k] = dct.pop(k)
else:
dct.pop(k)
+ if "get_default" in dct and dct["get_default"]:
+ dct.pop("get_default")
+ new_dct = defaults.copy()
+ new_dct.update(dct)
+ dct = new_dct
obj = None
if self.simulate:
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index a774cef6d..315feba7b 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -241,7 +241,9 @@ def get_associated_model(parent_model, keys):
OBJECT_CLS = parent_model
fields = get_model_fields(OBJECT_CLS)
for idx, item in enumerate(keys):
- if not idx:
+ if item in (u"-", u""):
+ model = None
+ elif not idx:
if item not in fields:
raise ImporterError(
unicode(
@@ -286,7 +288,7 @@ class ImporterDefault(models.Model):
@property
def keys(self):
- return tuple(self.target.split('__'))
+ return tuple(t for t in self.target.split('__') if t not in (u"-", u""))
@property
def associated_model(self):
@@ -297,7 +299,10 @@ class ImporterDefault(models.Model):
def values(self):
values = {}
for default_value in self.default_values.all():
- values[default_value.target] = default_value.get_value()
+ target = default_value.target
+ if target == u"-":
+ target = u""
+ values[target] = default_value.get_value()
return values
@@ -341,7 +346,7 @@ class ImporterDefaultValues(models.Model):
return
field = fields[target]
if not hasattr(field, 'rel') or not hasattr(field.rel, 'to'):
- return
+ return self.value
model = field.rel.to
# if value is an id
try: