Do not make buttons read-only based on groups for administrator users
Since 6ebedcf8826e administrators no longer have groups, disabling buttons based on groups should be skipped for administrators. Closes #15134
This commit is contained in:
1 parent
2f88ea7830
commit
86c51cd9da
1 file changed
+13
-6
@@ -271,7 +271,11 @@ class ModelView(Model):
|
||||
pool = Pool()
|
||||
User = pool.get('res.user')
|
||||
|
||||
key = (User.get_groups(), cls.__name__, view_id, view_type, level)
|
||||
is_administrator = User.is_administrator()
|
||||
groups = User.get_groups()
|
||||
|
||||
key = (
|
||||
is_administrator, groups, cls.__name__, view_id, view_type, level)
|
||||
result = cls._fields_view_get_cache.get(key)
|
||||
if result:
|
||||
return result
|
||||
@@ -563,6 +567,9 @@ class ModelView(Model):
|
||||
User = pool.get('res.user')
|
||||
ActionWindow = pool.get('ir.action.act_window')
|
||||
|
||||
is_administrator = User.is_administrator()
|
||||
groups = set(User.get_groups())
|
||||
|
||||
if fields_width is None:
|
||||
fields_width = collections.defaultdict(list)
|
||||
if fields_optional is None:
|
||||
@@ -657,17 +664,17 @@ class ModelView(Model):
|
||||
states = cls._buttons[button_name]
|
||||
else:
|
||||
states = {}
|
||||
groups = set(User.get_groups())
|
||||
button_attr = Button.get_view_attributes(
|
||||
cls.__name__, button_name)
|
||||
for attr, value in button_attr.items():
|
||||
if not element.get(attr):
|
||||
element.set(attr, value or '')
|
||||
button_groups = Button.get_groups(cls.__name__, button_name)
|
||||
if ((button_groups and not groups & button_groups)
|
||||
or (not button_groups
|
||||
and not ModelAccess.get_access(
|
||||
[cls.__name__])[cls.__name__]['write'])):
|
||||
if (not is_administrator
|
||||
and ((button_groups and not groups & button_groups)
|
||||
or (not button_groups
|
||||
and not ModelAccess.get_access(
|
||||
[cls.__name__])[cls.__name__]['write']))):
|
||||
states = states.copy()
|
||||
states['readonly'] = True
|
||||
element.set('states', encoder.encode(states))
|
||||
|
||||
Reference in new issue
Block a user