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(