details: https://code.tryton.org/tryton/commit/1326133b9082
branch: default
user: Cédric Krier <[email protected]>
date: Tue Sep 15 15:23:42 2026 +0200
description:
Override contextual groups and administrator when evaluating button
states
Closes #15098
diffstat:
trytond/trytond/model/modelview.py | 20 ++++++++++++--------
1 files changed, 12 insertions(+), 8 deletions(-)
diffs (30 lines):
diff -r a54c00182549 -r 1326133b9082 trytond/trytond/model/modelview.py
--- a/trytond/trytond/model/modelview.py Tue Sep 15 15:19:40 2026 +0200
+++ b/trytond/trytond/model/modelview.py Tue Sep 15 15:23:42 2026 +0200
@@ -772,14 +772,18 @@
if (transaction.user != 0) and check_access:
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(),
+ administrator=User.is_administrator()):
+ 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(