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(

Reply via email to