summaryrefslogtreecommitdiff
path: root/ishtar_common/models_imports.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2021-10-01 17:23:23 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2022-07-08 09:58:48 +0200
commit0f39694b279007da6d924515c3376962d80f378e (patch)
treec507eadcd0c2629ea7dd18dbc75b5983f6a9039e /ishtar_common/models_imports.py
parent2bdffb95a3a4ad83800ecfb9c5885350ed852f1f (diff)
downloadIshtar-0f39694b279007da6d924515c3376962d80f378e.tar.bz2
Ishtar-0f39694b279007da6d924515c3376962d80f378e.zip
Performance on imports: group all post treatment to the end
Diffstat (limited to 'ishtar_common/models_imports.py')
-rw-r--r--ishtar_common/models_imports.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/ishtar_common/models_imports.py b/ishtar_common/models_imports.py
index 694b0d17d..c91ce473f 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -1486,8 +1486,21 @@ def pre_delete_import(sender, **kwargs):
to_delete = []
for accessor, imported in instance.get_all_imported():
to_delete.append(imported)
+ post_delete_to_update = {}
for item in to_delete:
+ if hasattr(item, "post_delete_to_update"):
+ item._no_pre_delete = True
+ for klass, values in item.post_delete_to_update():
+ if klass not in post_delete_to_update:
+ post_delete_to_update[klass] = set(values)
+ else:
+ post_delete_to_update[klass].update(values)
item.delete()
+ for klass in post_delete_to_update:
+ for item_id in post_delete_to_update[klass]:
+ q = klass.objects.filter(pk=item_id)
+ if q.count():
+ q.all()[0].save()
pre_delete.connect(pre_delete_import, sender=Import)