summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/data_importer.py19
-rw-r--r--ishtar_common/models_common.py22
-rw-r--r--ishtar_common/wizards.py2
3 files changed, 33 insertions, 10 deletions
diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py
index 7717c0e03..c239b20b4 100644
--- a/ishtar_common/data_importer.py
+++ b/ishtar_common/data_importer.py
@@ -945,6 +945,8 @@ class Importer(object):
item = cls.objects.get(pk=pk)
except cls.DoesNotExist:
continue
+ if cls != self.OBJECT_CLS:
+ cls._no_down_model_update = True
item._timestamp = self.timestamp
item._queue = "low_priority"
item.save()
@@ -1186,6 +1188,8 @@ class Importer(object):
def _create_item(self, cls, dct, idx_line):
obj = cls(**dct)
obj._no_post_save = True # delayed at the end of the import
+ if hasattr(obj, "no_post_process"):
+ obj.no_post_process(history=True)
obj._queue = "low_priority"
obj.save()
self._add_to_post_save(cls, obj.pk, idx_line)
@@ -1326,6 +1330,9 @@ class Importer(object):
else:
self.number_updated += 1
+ if hasattr(obj, "no_post_process"):
+ obj.no_post_process(history=True)
+
if not created and "defaults" in data:
for k in data["defaults"]:
setattr(obj, k, data["defaults"][k])
@@ -1372,6 +1379,8 @@ class Importer(object):
setattr(item, k, geodata[k])
item._timestamp = self.timestamp
item._queue = "low_priority"
+ if hasattr(item, "no_post_process"):
+ item.no_post_process(history=True)
item.save()
else:
item = GeoVectorData.objects.create(**geodata)
@@ -1390,6 +1399,8 @@ class Importer(object):
obj._no_move = True
obj.skip_history_when_saving = True
obj._queue = "low_priority"
+ if hasattr(obj, "no_post_process"):
+ obj.no_post_process(history=True)
obj.save()
n = datetime.datetime.now()
@@ -1463,6 +1474,8 @@ class Importer(object):
t_obj._no_post_save = True
t_obj._timestamp = self.timestamp
t_obj._queue = "low_priority"
+ if hasattr(t_obj, "no_post_process"):
+ t_obj.no_post_process(history=True)
t_obj.save()
self._add_to_post_save(t_obj.__class__, t_obj.pk, idx_line)
if self.import_instance and hasattr(t_obj, "imports") and created:
@@ -1805,6 +1818,8 @@ class Importer(object):
if changed:
v._timestamp = self.timestamp
v._queue = "low_priority"
+ if hasattr(v, "no_post_process"):
+ v.no_post_process(history=True)
v.save()
for att, objs in m2m_m2ms:
if type(objs) not in (list, tuple):
@@ -2154,6 +2169,8 @@ class Importer(object):
setattr(obj, k, updated_dct[k])
obj._timestamp = self.timestamp
obj._queue = "low_priority"
+ if hasattr(obj, "no_post_process"):
+ obj.no_post_process(history=True)
obj.save()
if (
not self.simulate
@@ -2224,6 +2241,8 @@ class Importer(object):
try:
v._timestamp = self.timestamp
v._queue = "low_priority"
+ if hasattr(v, "no_post_process"):
+ v.no_post_process(history=True)
v.save()
except DatabaseError as import_error:
msg = str(import_error)
diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py
index c623a0604..79aa66953 100644
--- a/ishtar_common/models_common.py
+++ b/ishtar_common/models_common.py
@@ -1051,7 +1051,8 @@ class FullSearch(models.Model):
m2m_search_vector.key, config=m2m_search_vector.language
)
).values("search")
- search_vectors.append(q.all()[0]["search"])
+ if q.count():
+ search_vectors.append(q.all()[0]["search"])
# int/float are not well managed by the SearchVector
for int_search_vector in self.INT_SEARCH_VECTORS:
@@ -1875,6 +1876,16 @@ class BaseHistorizedItem(
self.fix_associated()
return True
+ def no_post_process(self, history=False):
+ if not history:
+ self.skip_history_when_saving = True
+ self._cached_label_checked = True
+ self._post_saved_geo = True
+ self._external_id_checked = True
+ self._search_updated = True
+ self._no_move = True
+ self._no_down_model_update = True
+
class LightHistorizedItem(BaseHistorizedItem):
history_date = models.DateTimeField(default=datetime.datetime.now)
@@ -3284,15 +3295,6 @@ class MainItem(ShortMenuItem, SerializeItem, SheetItem):
if hasattr(item, "main_geodata"):
item.post_save_geo()
- def no_post_process(self):
- self.skip_history_when_saving = True
- self._cached_label_checked = True
- self._post_saved_geo = True
- self._external_id_checked = True
- self._search_updated = True
- self._no_move = True
- self._no_down_model_update = True
-
@classmethod
def app_label(cls):
return cls._meta.app_label
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 43e84fbcb..4e75b98de 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -767,6 +767,8 @@ class Wizard(IshtarWizard):
c_item = m.related.model(**other_objs[dependant_item])
setattr(obj, dependant_item, c_item)
obj.save()
+ # test framework do not reinit well this settings
+ obj._no_down_model_update = False
obj.save()
else:
adds = {}