summaryrefslogtreecommitdiff
path: root/ishtar_common/data_importer.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/data_importer.py')
-rw-r--r--ishtar_common/data_importer.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 33fa2f295..398ca6e14 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -1951,19 +1951,21 @@ class Importer:
else:
self.new_objects.append((path, cls, new_dct))
else:
- # manage UNICITY_KEYS - only level 1
+ new_values = {}
+ # manage UNICITY_KEYS - only level 1 -> no path
if not path and self.UNICITY_KEYS:
get_by_unicity_key = True
for k in list(dct.keys()):
if k not in self.UNICITY_KEYS and k != "defaults":
if dct[k]:
- defaults[k] = dct.pop(k)
+ new_values[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)
+ new_dct.update(new_values)
dct = new_dct
if self.simulate:
@@ -1996,7 +1998,7 @@ class Importer:
self.updated_objects.append([path, q.all()[0], dct, {}])
dct["defaults"] = defaults.copy()
else:
- if not dct and not defaults:
+ if not dct and not defaults and not new_values:
obj = None
else:
if (
@@ -2009,6 +2011,7 @@ class Importer:
else:
created = True
new_dct = dct.copy()
+ new_dct.update(new_values)
for k in defaults:
if k not in dct:
new_dct[k] = defaults[k]
@@ -2045,7 +2048,23 @@ class Importer:
if k in self.concat_str:
sep = self.concat_str[k]
updated_dct[k] = val + sep + new_val
- else: # TODO: manage conservative
+ for k in new_values:
+ new_val = new_values[k]
+ if new_val is None or new_val == "":
+ continue
+ val = getattr(obj, k)
+ if obj and k == "data":
+ updated_dct[k] = update_data(obj.data, new_val)
+ elif (
+ k in self.concats
+ and type(val) == str
+ and type(new_val) == str
+ ):
+ sep = ""
+ if k in self.concat_str:
+ sep = self.concat_str[k]
+ updated_dct[k] = val + sep + new_val
+ else:
updated_dct[k] = new_val
if updated_dct:
if self.simulate: