details:   https://code.tryton.org/tryton/commit/76fd590bfdaa
branch:    default
user:      Cédric Krier <[email protected]>
date:      Tue Apr 07 13:39:54 2026 +0200
description:
        Delete related resources when deleting records

        Closes #14748
diffstat:

 trytond/trytond/model/modelstorage.py |  6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diffs (21 lines):

diff -r 31d0c0660002 -r 76fd590bfdaa trytond/trytond/model/modelstorage.py
--- a/trytond/trytond/model/modelstorage.py     Thu Apr 09 19:20:38 2026 +0200
+++ b/trytond/trytond/model/modelstorage.py     Tue Apr 07 13:39:54 2026 +0200
@@ -518,11 +518,17 @@
     @classmethod
     @without_check_access
     def _after_delete(cls, ids, on_delete):
+        from trytond.ir.resource import ResourceMixin
         pool = Pool()
         Translation = pool.get('ir.translation')
         if any(getattr(f, 'translate', False) and not hasattr(f, 'set')
                 for f in cls._fields.values()):
             Translation.delete_ids(cls.__name__, 'model', ids)
+        resource_models = (
+            m for _, m in pool.iterobject() if issubclass(m, ResourceMixin))
+        resources = [f'{cls.__name__},{id}' for id in ids]
+        for model in resource_models:
+            model.delete(model.search([('resource', 'in', resources)]))
         for meth in on_delete:
             meth()
 

Reply via email to