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_usertodo_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)    收藏  举报

导航