diff options
| -rw-r--r-- | ishtar_common/data_importer.py | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index e9b962755..5e3a6500c 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -1918,19 +1918,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: @@ -1963,7 +1965,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 ( @@ -1976,6 +1978,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] @@ -2012,7 +2015,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: |
