Oejia 技术栈
首页
应用市场
方案
OE学院
分享
关于
编辑器
登录
Odoo 权限控制解析及 eval 详解
on 2016-02-21
### 创建权限组 示例 ```xml <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)` ### 组和菜单 ```xml <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菜单 另一中写法: ```xml <menuitem id="menu_id1 " name="menu1" parent="menu_p" sequence="1" groups="A,B "/> ``` base.group_user 是一个通用的系统内置用户组, Odoo系统中所有用户默认属于此组 ### 记录规则 权限规则可用于更精细化的权限控制,对应【设置】->【安全】->【记录规则】的数据 ```xml <record model="ir.rule" id="rule1"> <field name="name">rule1</field> <field name="model_id" ref="model_model1"/> <field name="global" eval="True"/> <field name="domain_force">[1,’=’,1]</field> <field name="groups" eval="[(4,ref('A'))]"/> </record> ``` name 规则名称 **model_id** 对应的模型 **global** 是否是全局 **domain_force** 过滤条件 **groups** 属于哪个组 以上表示A组的成员就可以获取model_model1的所有数据,可以看出domain_force是控制的关键 ### 访问控制列表(组和权限映射表) 另一种表达权限规则的方式是编写 ir.model.access.csv 文件 对应【设置】->【安全】->【访问控制列表】的数据 示例: id|name|model_id:id|group_id:id|perm_read|perm_write|perm_create|perm_unlink --|----|----|---|---|----|----|--- access_xxx|xxxxx|model_website_menu|base.group_website_designer|1|1|1|1 **model_id:id** 对应的对象模型, 写法示例:`website.model_website_config_settings` 如果内容本身在website模块中则可以省略`website.` 后面则为模型的name将"."替换成"-"的结果,在前面加`model_` **group_id:id** 哪个组 **perm_read**、**perm_write**、**perm_create**、**perm_unlink** 增删改查权限。1 有权限 0 无权限
Information
Odoo 权限控制解析及 eval 详解
http://www.oejia.net/article/1ba0295534a6d2a77837c85d58fffe24
http://www.oejia.net/raw/1ba0295534a6d2a77837c85d58fffe24
on 2016-02-21
Category
Odoo
Related
2016-02-25 :
待整理
2018-09-26 :
Odoo 微信小程序商城模块 Oejia_weshop v0.1.1 发布
2023-08-06 :
企业微信错误码 81013 的排查与处理
2018-04-09 :
如何将 Odoo 的数据备份到阿里云对象存储OSS上
2018-09-20 :
基于 Odoo 框架的开源在线客服系统
2021-05-14 :
Odoo 小程序商城模块 Oejia_weshop v0.2.3 发布,多形式的客户资产及客户分级,多商户供应流程的管理
2023-04-29 :
Odoo商城模块 Oejia_weshop v1.1 发布,支持Odoo16及下单子账号特性
2021-01-23 :
Odoo 如何用命令行备份还原数据
2018-11-09 :
微信开发
2017-11-02 :
Odoo 模块开发规范常见约定
官方订阅号
关注订阅实时了解我们更多分享
分类
(20)
Django (3)
DjangoX (13)
JS (2)
Nginx (1)
Odoo (134)
Python (1)
YouMd (3)
公告说明 (2)
前端 (2)
后端HTTP (7)
异常处理 (1)
桌面UI (1)
移动开发 (4)
About This Entry
YouMd 基本使用说明
Python 运行参数解析的使用示例
About This Blog
main index
to find recently
archives
to find all
标签
微信模块发布记录
微信模块
小程序商城
Web
Http
客服系统
审批OA
HTML5
OE商城
Markdown
DjangoX
解析
oeshop
PyQT
服系统
YouPBX
Excel
示例
md
markdown
Python
最近发布
OSError [Errno 5] Input/output error 异常处理
Odoo context 的常见使用示例
Odoo 符合国人菜单导航习惯的后台主题,支持最新的Odoo17、16等版本,支持企业版!
Odoo 官方应用市场开启 Odoo17 应用的发布!增加了行业应用专栏
Odoo商城模块 Oejia_weshop v1.2 发布,多商户、分销增强,增加商家端!
处理 Error Failed to download metadata for repo ‘appstream‘ Cannot prepare internal mirrorlist
Odoo 16 关键变化 change the term "acquirer" to "provider"
企业微信错误码 81013 的排查与处理
微信模块 Oejia_wx v0.6.7 发布,支持 Odoo16 及新的Websocket消息模式
Friend Links
Oejia技术梦博客分享
YouMd,爱上MarkDown
Mole轻量级wsgi架子