From 2584156da2c835d2886117b6db3052bc0d6b2014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 30 Sep 2026 08:15:23 +0200 Subject: [PATCH] Override contextual groups when evaluating button states Closes #15098 (grafted from 1326133b908292ff6e2964aa5a3c0682dd4ecd5c) --HG-- branch : 8.0 --- trytond/trytond/model/modelview.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/trytond/trytond/model/modelview.py b/trytond/trytond/model/modelview.py index d19c14bb84..a95a2b1977 100644 --- a/trytond/trytond/model/modelview.py +++ b/trytond/trytond/model/modelview.py @@ -771,14 +771,17 @@ class ModelView(Model): ModelAccess.check(cls.__name__, 'write') states = cls._buttons.get(func.__name__, {}) - for state_name in {'invisible', 'readonly'} & states.keys(): - state = _pyson_encoder.encode(states[state_name]) - for record in records: - if _record_eval_pyson(record, state, encoded=True): - raise AccessButtonError( - gettext('ir.msg_button_state_record', - button=func.__name__, - **cls.__names__(record=record))) + with transaction.set_context( + groups=User.get_groups()): + for state_name in ( + {'invisible', 'readonly'} & states.keys()): + state = _pyson_encoder.encode(states[state_name]) + for record in records: + if _record_eval_pyson(record, state, encoded=True): + raise AccessButtonError( + gettext('ir.msg_button_state_record', + button=func.__name__, + **cls.__names__(record=record))) if (transaction.user != 0) and check_access: button_rules = Button.get_rules(