odoo权限管理
odoo是分模块进行权限管理的,也就是创建用户的时候要给用户指定模块

基于权限是根据模块就行分配的,所以需要每个模块指定一个权限分类名字
<?xml version="1.0" ?> <odoo> <record id="module_todo_category" model="ir.module.category"> #为todo模块创建一个权限类别module_todo_category <field name="name">Todo</field> </record> <!-- Todo User Group --> <record id="todo_group_user" model="res.groups"> #在权限类别中分别创建权限组:todo_group_user、todo_group_manager <field name="name">User</field> <field name="category_id" ref="module_todo_category"/> #指定权限组属于某个模块 <field name="implied_ids" #<implied_ids>则是需要继承的群组,意思是加入该群组则默认加入继承的群组。 eval="[(4, ref('base.group_user'))]"/> </record> <!-- Todo Manager Group --> <record id="todo_group_manager" model="res.groups"> <field name="name">Manager</field> <field name="category_id" ref="module_todo_category"/> <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/> <field name="users" #users 指定了组里面的用户,这里表示把admin用户添加到该组 eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/> </record> <!--todouser记录规则--> <record id="todo_rule_user" model="ir.rule"> #记录规则id <field name="name">todo_user_rule</field> <field name="model_id" ref="model_todo_task"/> #记录规则关联的模型 <field name="groups" eval="[(4, ref('todo.todo_group_user'))]"/> #指定某个组的使用这个记录规则 <field name="domain_force">[('create_uid','=',user.id)]</field> #指定记录规则 </record> <!--todomanager记录规则--> <record id="todo_rule_manager" model="ir.rule"> <field name="name">todo_manager_rule</field> <field name="model_id" ref="model_todo_task"/> <field name="groups" eval="[(4, ref('todo.todo_group_manager'))]"/> <field name="domain_force">[(1,'=',1)]</field> </record> </odoo>
总之上面的两个权限管控实现了:是否有菜单和,哪些记录可以进行操作。至于界面根据权限显示,需要在视图中指定。
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)
操作符(domain时使用)
| 名称 | 说明 |
|---|---|
| =,!=,>,>=,<,<= | 比较运算,等于,不等于,大于,大于等于,小于,小于等于 |
| like | 模糊匹配,可以使用通配符,下划线“_”匹配一个字符,百分号“%”匹配零或者多个字符 |
| ilike | 类似like,不区分大小写 |
| not like | 模糊不匹配的 |
| in | 包含,判断值是否在元素的列表里面 |
| not in | 不包含,判断值是否不在元素的列表里面 |
| child_of | 判断是否value的子记录,通过_parent_name实现,不太理解 |
| parent_left | ??? |
| parent_right | ??? |
多条件的逻辑运算
['&', ('partner_id.coutnry_id.code', '=', 'CN'), ('partner_id.coutry_id.code', '=', 'US')] #其中&(and)可以省略
名字为 ABC 而且 语言编码不为en_US”,Domain里条件默认逻辑关系就是and,所以如下:[('name','=','ABC'),('language.code','!=','en_US')]
名字为 ABC 而且语言编码不为 en_US 而且国家的编码为 be 或者 de”:[('name','=','ABC'),('language.code','!=','en_US'),'|',('country_id.code','=','be'),('country_id.code','=','de')]
参考:https://blog.csdn.net/u013250491/article/details/86699928
posted on 2019-10-11 15:31 SmartTony_07 阅读(460) 评论(0) 收藏 举报
浙公网安备 33010602011771号