odoo中根据用户组隐藏视图元素与菜单项

【open judge】【程设】魔兽世界三开战! #程设 魔兽世界三---开战!--------原以为会很容易ac,没想到写了好久,看来自己的水平还是亟待提高啊!有几个比较有趣的点:1. typeid(#include<typeinfo>)还是比较好用的,特别是本题当战士为wolf,iceman, dragon, ninja时有特殊技能,那么用typeid判断一下就很方便了。2. 对于这种输出很复杂的问题,往往通过使用文件的输入输出再... 阅读详情

在Odoo中,有时需要根据用户所属的组来显示或隐藏视图中的特定元素(字段、按钮等)或者菜单项。这样可以确保应用的安全性和用户界面的简洁性。本教程将通过详细的代码示例介绍如何实现这一功能。

环境准备

确保已安装Odoo并且具备基本的模块开发知识。本教程以Odoo 14为例,但大部分内容同样适用于其他版本。

一、隐藏视图元素

要根据用户组隐藏视图中的元素,可以使用groups属性。此属性接受一组用户组的外部ID,只有属于这些组的用户才能看到对应的视图元素。

步骤1:定义用户组

首先,在模块的安全目录下的ir.model.access.csv文件中或者直接在security文件夹下通过XML文件定义需要的用户组。

<!-- security/ir.model.access.csv -->
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_group_demo_user,group_demo_user,model_demo_model,group_demo_user,1,0,0,0

或者通过XML定义:

<!-- security/security.xml -->
<odoo>
    <data noupdate="1">
        <record id="group_demo_user" model="res.groups">
            <field name="name">Demo User</field>
            <field name="comment">This group allows access to demo features</field>
        </record>
    </data>
</odoo>
步骤2:在视图中使用groups属性

接下来,在视图XML中为需要根据用户组隐藏的元素添加groups属性。例如,隐藏一个按钮:

<!-- views/demo_view.xml -->
<odoo>
    <record id="view_demo_form" model="ir.ui.view">
        <field name="name">demo.form</field>
        <field name="model">demo.model</field>
        <field name="arch" type="xml">
            <form string="Demo Form">
                <header>
                    <button name="%(demo_action)d" string="Demo Action" type="action"
                            groups="your_module.group_demo_user"/>
                </header>
                <sheet>
                    <!-- Form content here -->
                </sheet>
            </form>
        </field>
    </record>
</odoo>

在上面的例子中,groups属性指定了your_module.group_demo_user组。只有属于这个组的用户才能看到这个按钮。

二、隐藏菜单项

要根据用户组隐藏菜单项,也是利用groups属性。

步骤1:在菜单项定义中使用groups属性

在模块的views目录下的某个XML文件中,为需要根据用户组隐藏的菜单项设置groups属性。例如:

<!-- views/menu.xml -->
<odoo>
    <menuitem id="main_demo_menu" name="Demo" sequence="10"/>
    <menuitem id="sub_demo_menu" name="Sub Demo" parent="main_demo_menu"
              action="demo_action" groups="your_module.group_demo_user"/>
</odoo>

在此示例中,sub_demo_menu菜单项只对your_module.group_demo_user组的成员可见。

结论

通过为视图元素和菜单项设置groups属性,可以根据用户所属的用户组来控制它们的可见性。这是Odoo提供的一种强大且灵活的权限控制机制,有助于创建安全且用户友好的应用程序。

生态位宽度计算&可视化展示(R语言) 物种的生态位越宽,该物种的特化程度就越小,倾向于泛化种(generalist species);物种的生态位越窄,倾向于是一个特化种(specialists species)。生态位宽度是指物种(或其它生物单位)在群落中所利用的各种不同资源的总和。本篇所使用为生态位宽度指数即**Levins的生态位宽度指数。 阅读详情

相关推荐

10、odoo安全权限

15、安全权限(Security) 在odoo中配置访问控制机制来实现连贯的安全策略。 Odoo的权限的核心是权限组(res_groups)。基于组的访问控制机制。 通过组权限来实现权限管理,组是保存在res.groups里的一些记录。 菜单的权限可以通过xml中菜单的定义设置组权限。 菜单下关联的model也要设置对象级别的访问权限(read读, write写, create增, unlink删),并关联到特定组。 还有一些model.py里的做权限检查或xml定义中设置field相关的组。 权限管理的

LDC,公众号【轻松学编程】 1045

odoo15】在odoo隐藏一个官方的菜单项Customers

在二次开发的过程中有的菜单项用不着,就需要把它删除,但是删除可能会导致莫名其妙的错误,所以就它隐藏起来是最优的选择。隐藏一下这个二级菜单【客户】 (Customers) 原来有xpath插入过字段的tree就无法隐藏。所以隐藏这个【Customers】效果如下: 代码如下:继承这个模型:【sale.order】 init里要引入,权限得写。 from odoo import fields, models, api, _ class testInherit(models.M..

ONLYSRY的博客 1441

很好用的三菱PLC仿真软件

很好用的三菱PLC仿真软件

odoo 隐藏源码菜单

1.隐藏菜单 有时,我们需要把源码里面的菜单去掉,有些源码里面的功能以及菜单就不用显示 <record id="sale.report_sales_team" model="ir.ui.menu"> <field name="active" eval="False"/> </record> 解释上面代码: id:模块名.原菜单id model:固定的model,表示菜单模型里面的数据 field 里面的name: active 为Fal

隔壁小红馆 794

如何在 odoo 的tree视图隐藏特定列

如何在 odoo 的tree视图隐藏特定列

iuv_li的博客 1526

odoo12 登录页隐藏“数据库管理,odoo支持”

登录页隐藏“数据库管理,odoo支持” 修改 odoo.conf 文件 list_db = False 修改 addons/web/views/webclient_templates.xml 注释掉以下代码 <!-- <div class="text-center small mt-4 pt-3 border-top" t-if="not disable_footer"...

MALA的博客 1332

odoo17 group标签

odoo17开发初学者 收集通义灵码的结果整理#

lonren_945的博客 957

要想隐藏odoo原生菜单

odoo

2201_75422198的博客 368

Odoo视图元素和菜单的组权限控制

首先,需要在Odoo系统中定义不同的用户组,并为这些组分配相应的权限。可以通过Odoo后台的“设置” -> “用户” -> “组”来创建和管理用户组。创建一个新的自定义模块,用于演示如何根据用户组隐藏视图元素和菜单。在模块的文件中声明模块的基本信息和依赖关系。

StackSurfer的博客 763

Odoo treeView列表视图详解

转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826414.html TreeView:列表视图 1:<tree>标签的属性 【tree标签内的属性,就是界面上的表现、行为,可以通过视图继承,往tree标签增加属性来自定义tree视图的按钮。】 列表视图的根元素是<tree>,它可...

a631278993的博客 1939

Odoo17中的button按钮属性汇总

odoo学习,根据“通义灵码”生成,自己整理! 感觉阿里的“通义灵码”,学习中的专家指导。

lonren_945的博客 2462

Odoo (hide a menu)隐藏菜单

1.找到定义的菜单 下面是mail模块的top菜单,显示在页面左上角的,拿它举例 <menuitem id="mail.mail_channel_menu_root_chat" name="Discuss" action="mail_channel_action_client_chat" web_icon="mail...

Heathy__的专栏 3319

odoo学习之:【转】控制menuitem的显示权限

作者原文:https://blog.csdn.net/wangnan537/article/details/43992771 在实际应用Odoo(OpenERP)的过程中, 会有对某用户组隐藏菜单的需求. 下文的代码定义了一个特定的用户组hideme, 并将要隐藏的菜单指定给该用户组, 这样相当于对所有的普通用户组屏蔽了此菜单.注: 也可将groups属性值指定为多个用户组, 以逗号...

JRSA2010的博客 489

Odoo(Openerp)中隐藏button按钮,根据隐藏

How to show a button for only one group in Openerp You can create a view for all your other users without the button you want to show. And then create a other view that inherits your first view a

shanzhizi的专栏 7053

odoo 表单视图隐藏字段名field

我们有的时候在表单上,不想显示字段的名字,只想显示值。 可以使用“nolabel”属性,在视图中对应的field添加就可以了。 例: <page string="成绩单"> <group> <field name="score_list" nolabel="1"/> </group> </page...

cy_an的博客 3183

odoo 内置方法user_has_groups,判断用户是否存在群组中

odoo 常用内置方法 1、user_has_groups 判断当前登录用户是否存在某群组中。 @api.model def user_has_groups(self, groups): # groups 为','分隔的群组名,包括所在模块, module_name.group_name # 判断当前用户是否存在这些群组中,是则返回True,否则返回False # 如果在groups中以"!,"开头,则取否。即如果用户存在这些群组中,返回False,否则返回True # 也可以解释为,如果当前用户

MALA的博客 1441

odoo 中 tree中的字段隐藏 排序等

对于在开发odoo字段的显示 1 tree中字段隐藏 点击选中显示 2 many2one 填写不存在的字段 可以创建 创建并编辑 3 条件隐藏 1 <tree ...> ... <field name="state" optional="hide"/> </tree> 2 <field name="state" options="{'no_create_edit':True, 'no_create':True }"/> 3 <field name=

hou9876543210的博客 1243

ODOO权限管理,在两个方面设置权限

转载参考https://zhuanlan.zhihu.com/p/29130388 在odoo中新建两个用户user1,user2 新建用户 建完了用户,记得编辑用户,设置密码。 然后以user1用户登录系统,在导航菜单中我们看不到请假菜单,因为我们没有给user1这个用户请假模块的权限。编辑security/ir.model.access.csv id,name,model_id:...

weixin_33919941的博客 1025

odoo15 根据action中的domain隐藏编辑按钮

odoo的编辑功能是一直存在的,当用户想在某种条件下不允许编辑字段,只能在fields上或者view上添加readonly的条件,但是当字段或者条件一多时控制难度就会变得很大,所以作为一个伸手党在网上去找是否有对应的js,可以控制前端的编辑按钮,但是很遗憾,虽然可以找到一些,但是在odoo15中并不适用,所以只能自己看看能不能搞出来;通过debug调试获取定位到了web.FormController中的updateButtons函数,该函数是控制视图中的按钮的显示的,通过继承这个函数添加我们的隐藏逻辑;

weixin_44752565的博客 902

odoo查看用户有没有某个权限

查看用户在不在某个权限组: self.env.user.has_group("权限组id ")

weixin_43873651的博客 918

ODOO18菜鸟二次开发系列(4)-权限视图模块

示例:GLOBAL_RULE_1 AND GLOBAL_RULE_2 AND ( (GROUP_A_RULE_1 OR GROUP_A_RULE_2) OR (GROUP_B_RULE_1 OR GROUP_B_RULE_2) )“记录规则”全局规则(非特定组)是一种限制,无法绕过。组专用规则授予额外权限,但受全局规则的限制。第一组规则进一步限制了全局规则,但可以通过附加的组规则加以放宽。全局规则通过逻辑操作符(AND)组合在一起,并以下步骤的结果组合在一起。

cgplayer的博客 505
上一篇: 在odoo中以超级用户访问记录集
下一篇: 探索AI大模型学习:理论基础、技术突破与未来挑战
StackSurfer
博客等级 码龄3年 683粉丝 94原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值