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>2021-10-02 05:38:37 +0200
commit193791d30112fda27c021547c429234e51192a01 (patch)
treeb25f1febc6a31f68d46524fabd1c150899da27b0 /ishtar_common/models_imports.py
parenta418099aea17ffc5a1cee2a51a80e5500a307bcf (diff)
downloadIshtar-193791d30112fda27c021547c429234e51192a01.tar.bz2
Ishtar-193791d30112fda27c021547c429234e51192a01.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 a90e16373..e67f02083 100644
--- a/ishtar_common/models_imports.py
+++ b/ishtar_common/models_imports.py
@@ -1483,8 +1483,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)