From 2262e4b2525e7527f52ef1c92ac75248abaefa27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 31 Aug 2026 13:43:41 +0200 Subject: [PATCH] Do not enforce access rights when performing action on delete Closes #15050 (grafted from e6d7121c620cec6986ab524f43b97f7adb5f7da9) --HG-- branch : 8.0 --- trytond/trytond/model/modelsql.py | 35 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/trytond/trytond/model/modelsql.py b/trytond/trytond/model/modelsql.py index 161b4fcbf7..d2ef540cc4 100644 --- a/trytond/trytond/model/modelsql.py +++ b/trytond/trytond/model/modelsql.py @@ -1672,7 +1672,7 @@ class ModelSQL(ModelStorage): 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=[]) @@ -1680,24 +1680,25 @@ class ModelSQL(ModelStorage): 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(