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-11-16 17:04:41 +0100
commit4a16a0436dd7af9a224da6cd04fc1e49b849d193 (patch)
treeaee1e56bb522ec62ff624c28ff475534e590f211 /ishtar_common/models_imports.py
parenta18d2452c8f15792724dd56b53d991247463ceec (diff)
downloadIshtar-4a16a0436dd7af9a224da6cd04fc1e49b849d193.tar.bz2
Ishtar-4a16a0436dd7af9a224da6cd04fc1e49b849d193.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)