diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-01 17:23:23 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-10-25 12:06:03 +0200 |
commit | dcbed2dc59559c07617b7f8d5df4693cbf51e0d7 (patch) | |
tree | 78733bafe88cf1a9c4898bc8b90e2bfa4a8e344f /ishtar_common/models_imports.py | |
parent | a41ec13e091ba7d7087379089d879f93a00ab87e (diff) | |
download | Ishtar-dcbed2dc59559c07617b7f8d5df4693cbf51e0d7.tar.bz2 Ishtar-dcbed2dc59559c07617b7f8d5df4693cbf51e0d7.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.py | 13 |
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) |