summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-22 13:41:53 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-05-22 15:46:19 +0200
commit53a70003a82411c134d1a5e7cf18fc946fb63ec1 (patch)
tree3b9d0fb15e18686c36ac5d5839dc9dfec2ddf73b /ishtar_common
parent55006ffc3b5c66d51636853e15fa702da5185dc9 (diff)
downloadIshtar-53a70003a82411c134d1a5e7cf18fc946fb63ec1.tar.bz2
Ishtar-53a70003a82411c134d1a5e7cf18fc946fb63ec1.zip
🐛 fix update importer
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/data_importer.py29
1 files changed, 25 insertions, 4 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 584917c8e..b06bef0a2 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -2068,19 +2068,21 @@ class Importer(object):
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:
@@ -2113,7 +2115,7 @@ class Importer(object):
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 (
@@ -2126,6 +2128,7 @@ class Importer(object):
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]
@@ -2141,7 +2144,7 @@ class Importer(object):
raise self._get_does_not_exist_in_db_error(cls, dct)
dct["defaults"] = defaults.copy()
- # manage default values and concatenation
+ # manage default, updated values and concatenation
if not created and not path and self.UNICITY_KEYS and obj is not None:
updated_dct = {}
for k in dct["defaults"]:
@@ -2162,6 +2165,24 @@ class Importer(object):
if k in self.concat_str:
sep = self.concat_str[k]
updated_dct[k] = val + sep + new_val
+ 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:
self.updated_objects[-1][-1] = updated_dct