Odoo 15:如何在视图中判断当前用户是否为管理员
在Odoo中为审批取消按钮添加管理员可见性判断
你可以直接在按钮的attrs域表达式中通过检查用户组来实现管理员判断,无需新增字段或使用模板指令。Odoo的域表达式支持直接调用user.has_group()方法,而系统管理员默认属于base.group_system组,这和env.is_admin()的底层判断逻辑一致。
修改后的XML代码
<button name="action_cancel" string="Cancel" type="object" attrs="{'invisible': "['&amp;', '!user.has_group(\'base.group_system\')', '|','|','|',('request_status','in',['new','cancel']),'&amp;',('user_status','==',False),('has_access_to_request','==',False),'&amp;',('disable_cancellation','=',True),('request_status','=','approved'), ('request_owner_id', '!=', uid)]"}" data-hotkey="z" />
逻辑说明
!user.has_group('base.group_system'):判断当前用户不是系统管理员。如果用户是管理员,这个条件不成立,整个invisible的逻辑就会失效,按钮始终可见。- 原有不可见条件和这个判断通过
&amp;(逻辑与)组合,最终效果是:仅当用户非管理员且满足原有任意不可见规则时,按钮才会隐藏,管理员不受原有规则限制,始终能看到并使用取消按钮。
这种方式完全利用Odoo原生的域表达式能力,不需要额外开发成本,符合你的需求限制。
内容的提问来源于stack exchange,提问作者jacobbrds
相关产品推荐
相关产品推荐

