details: https://code.tryton.org/tryton/commit/e6d7121c620c
branch: default
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
diffstat:
trytond/trytond/model/modelsql.py | 35 ++++++++++++++++++-----------------
1 files changed, 18 insertions(+), 17 deletions(-)
diffs (54 lines):
diff -r 5687ccb4301e -r e6d7121c620c trytond/trytond/model/modelsql.py
--- a/trytond/trytond/model/modelsql.py Mon Aug 31 13:39:42 2026 +0200
+++ b/trytond/trytond/model/modelsql.py Mon Aug 31 13:43:41 2026 +0200
@@ -1676,7 +1676,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', ids)],
order=[])
@@ -1684,24 +1684,25 @@
related_records = list(set(related_records) - set(records))
return related_records
- for Model, field_name in foreign_keys_toupdate:
- related_records = get_related_records(Model, field_name, 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, 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, ids)
- if related_records:
- Model.delete(related_records)
+ for Model, field_name in foreign_keys_todelete:
+ related_records = get_related_records(Model, field_name, ids)
+ if related_records:
+ Model.delete(related_records)
- for Model, field_name in foreign_keys_tocheck:
- if get_related_records(Model, field_name, 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, ids):
+ error_args = Model.__names__(field_name)
+ raise ForeignKeyError(
+ gettext('ir.msg_foreign_model_exist',
+ **error_args))
try:
cursor.execute(*table.delete(