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))