details: https://code.tryton.org/tryton/commit/045dab2ec5ac
branch: 8.0
user: Cédric Krier <[email protected]>
date: Wed Sep 30 08:15:23 2026 +0200
description:
Override contextual groups when evaluating button states
Closes #15098
(grafted from 1326133b908292ff6e2964aa5a3c0682dd4ecd5c)
diffstat:
trytond/trytond/model/modelview.py | 19 +++++++++++--------
1 files changed, 11 insertions(+), 8 deletions(-)
diffs (29 lines):
diff -r b94c6bf0117d -r 045dab2ec5ac trytond/trytond/model/modelview.py
--- a/trytond/trytond/model/modelview.py Thu Aug 06 09:46:51 2026 +0200
+++ b/trytond/trytond/model/modelview.py Wed Sep 30 08:15:23 2026 +0200
@@ -771,14 +771,17 @@
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(