details:   https://code.tryton.org/tryton/commit/377a86d82d99
branch:    7.0
user:      Cédric Krier <[email protected]>
date:      Mon Aug 31 13:43:41 2026 +0200
description:
        Do not enforce access rights when performing action on delete

        Closes #15050
        (grafted from e6d7121c620cec6986ab524f43b97f7adb5f7da9)
diffstat:

 trytond/trytond/model/modelsql.py |  39 ++++++++++++++++++++-------------------
 1 files changed, 20 insertions(+), 19 deletions(-)

diffs (58 lines):

diff -r f79babe93601 -r 377a86d82d99 trytond/trytond/model/modelsql.py
--- a/trytond/trytond/model/modelsql.py Mon Sep 07 15:24:40 2026 +0200
+++ b/trytond/trytond/model/modelsql.py Mon Aug 31 13:43:41 2026 +0200
@@ -1526,7 +1526,7 @@
                         where=foreign_red_sql))
                 related_records = Model.browse([x[0] for x in cursor])
             else:
-                with without_check_access(), inactive_records():
+                with inactive_records():
                     related_records = Model.search(
                         [(field_name, 'in', sub_ids)],
                         order=[])
@@ -1539,26 +1539,27 @@
             sub_ids = list(sub_ids)
             red_sql = reduce_ids(table.id, sub_ids)
 
-            for Model, field_name in foreign_keys_toupdate:
-                related_records = get_related_records(
-                    Model, field_name, sub_ids)
-                if related_records:
-                    Model.write(related_records, {
-                            field_name: None,
-                            })
+            with without_check_access():
+                for Model, field_name in foreign_keys_toupdate:
+                    related_records = get_related_records(
+                        Model, field_name, sub_ids)
+                    if related_records:
+                        Model.write(related_records, {
+                                field_name: None,
+                                })
 
-            for Model, field_name in foreign_keys_todelete:
-                related_records = get_related_records(
-                    Model, field_name, sub_ids)
-                if related_records:
-                    Model.delete(related_records)
+                for Model, field_name in foreign_keys_todelete:
+                    related_records = get_related_records(
+                        Model, field_name, sub_ids)
+                    if related_records:
+                        Model.delete(related_records)
 
-            for Model, field_name in foreign_keys_tocheck:
-                if get_related_records(Model, field_name, sub_ids):
-                    error_args = Model.__names__(field_name)
-                    raise ForeignKeyError(
-                        gettext('ir.msg_foreign_model_exist',
-                            **error_args))
+                for Model, field_name in foreign_keys_tocheck:
+                    if get_related_records(Model, field_name, sub_ids):
+                        error_args = Model.__names__(field_name)
+                        raise ForeignKeyError(
+                            gettext('ir.msg_foreign_model_exist',
+                                **error_args))
 
             super(ModelSQL, cls).delete(list(sub_records))
 

Reply via email to