Odoo 权限控制解析及 eval 详解

创建权限组

示例

<record id="base.group_website_publisher" model="res.groups">
    <field name="name">Display Editor Bar on Website</field>
    <field name="category_id" ref="base.module_category_website"/>
</record>
<record id="base.group_website_designer" model="res.groups">
    <field name="name">Manage Website and qWeb view</field>
    <field name="users" eval="[(4, ref('base.user_root'))]"/>
    <field name="implied_ids" eval="[(4, ref('base.group_website_publisher'))]"/>
    <field name="category_id" ref="base.module_category_website"/>
</record>

以上选自 odoo website 模块源码,创建了两个组

name 组的描述名称
category_id 指定此组属于哪个应用程序(模块)
users 指定了组里面的用户,这里表示把admin用户添加到该组

eval 解析
(4,ID)添加主从链接关系到id=ID的对象。

(3,ID)去除和id=ID的对象主从链接关系,但是不删除这个对象

(2,ID) 去除和id=ID的对象主从链接关系,并且删除这个对象(调用unlink方法)

(5) 去除所有的链接关系,也就是循环所有的从数据且调用(3,ID)

(6,0,[IDs]) 用IDs里面的记录替换原来链接的记录,即先执行(5)再循环IDs执行(4,ID)

组和菜单

<record model="ir.ui.menu" id=" memu_id1">
    <field name="name" >menu1</field>
    <field name="groups_id" eval="[(6,0,[ref('A'),ref('B')]),]"/>
    <field name="sequence">1</field>
</record>

name 菜单名称
groups_id 哪些组可以访问该菜单

以上内容表示A组与B组的成员都可以访问menu1菜单

另一中写法:

    
    
  1. <menuitem id="menu_id1 " name="menu1" parent="menu_p" sequence="1" groups="A,B "/>

base.group_user 是一个通用的系统内置用户组, Odoo系统中所有用户默认属于此组

记录规则

权限规则可用于更精细化的权限控制,对应【设置】->【安全】->【记录规则】的数据

    
    
  1. <record model="ir.rule" id="rule1">
  2. <field name="name">rule1</field>
  3. <field name="model_id" ref="model_model1"/>
  4. <field name="global" eval="True"/>
  5. <field name="domain_force">[1,’=’,1]</field>
  6. <field name="groups" eval="[(4,ref('A'))]"/>
  7. </record>

name 规则名称
model_id 对应的模型
global 是否是全局
domain_force 过滤条件
groups 属于哪个组

以上表示A组的成员就可以获取model_model1的所有数据,可以看出domain_force是控制的关键

访问控制列表(组和权限映射表)

另一种表达权限规则的方式是编写 ir.model.access.csv 文件
对应【设置】->【安全】->【访问控制列表】的数据
示例:

idnamemodel_id:idgroup_id:idperm_readperm_writeperm_createperm_unlink
access_xxxxxxxxmodel_website_menubase.group_website_designer1111

model_id:id 对应的对象模型,
写法示例:website.model_website_config_settings
如果内容本身在website模块中则可以省略website.
后面则为模型的name将”.”替换成”-“的结果,在前面加model_

group_id:id 哪个组
perm_readperm_writeperm_createperm_unlink 增删改查权限。1 有权限 0 无权限


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Odoo 是一个开源的企业资源计划(ERP)系统,它提供了一套完整的商业应用程序,包括销售、采购、库存管理、生产管理、财务管理、人力资源管理等。下面是 Odoo 的系统架构详解: 1. 前端:Odoo 使用了基于 Web 技术的前端框架,提供了直观、用户友好的界面。前端部分主要负责与用户交互,并将用户输入的数据发送给后端进行处理。 2. Web 服务器:Odoo 支持多种 Web 服务器,如 Nginx、Apache 等。Web 服务器主要负责接收用户请求,并将请求转发给 Odoo 服务器进行处理。 3. Odoo 服务器:Odoo 服务器是整个系统的核心组件,它负责处理用户请求,并根据请求的类型进行相应的操作。Odoo 服务器采用了模块化的架构,每个功能模块都可以独立安装、升级和卸载。 4. 数据库:Odoo 使用关系型数据库来存储数据,常用的数据库包括 PostgreSQL、MySQL 等。所有的数据都存储在数据库中,包括用户信息、产品信息、订单信息等。 5. 模块:Odoo 的功能被组织成多个模块,每个模块负责一个特定的功能领域。例如,销售模块负责管理销售流程,采购模块负责管理采购流程等。用户可以根据自己的需求选择安装相应的模块。 6. 业务逻辑:Odoo 的每个模块都包含了一套完整的业务逻辑。例如,在销售模块中,用户可以创建销售订单、确认订单、生成发票等。这些业务逻辑被封装在模块中,并通过 Odoo 服务器进行处理。 7. API:Odoo 提供了一组丰富的 API,使开发人员能够通过编程的方式来与系统进行交互。开发人员可以使用 API 创建新的模块、扩展现有模块的功能,或者与其他系统进行集成。 总结来说,Odoo 的系统架构包括前端、Web 服务器、Odoo 服务器、数据库、模块、业务逻辑和 API。它提供了一个灵活、可扩展的平台,满足企业各种不同的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值