odoo 权限问题

odoo 权限问题

权限组问题

权限组是为了将人员按组划分同一分配权限。权限组的创建是基于每一个应用来实现的app

  1. 创建一个应用的分组(可省略,主要用于建立用户时有选择项)

创建一条record记录model是ir.module.category,例如在my_task(一个应用)myaddons/my_task/security/permission.xml中编写下面内容:dom

<record id="module_category_my_task" model="ir.module.category">
            <field name="name">个人任务</field>
            <field name="description">个人任务app</field>
            <field name="sequence">1</field>
</record>

image.png

  1. 建立2个分组.
<odoo>
    <data>
        <record id="module_category_my_task" model="ir.module.category">
            <field name="name">个人任务</field>
            <field name="description">个人任务app</field>
            <field name="sequence">1</field>
        </record>
        <!--建立应用权限分组-->
        <record id="my_task_manage" model="res.groups">
            <field name="name">管理员</field>
            <!--category_id关联的应用权限分类-->
            <field name="category_id" ref="module_category_my_task"/>
            <!--默认加入权限组的用户,base.user_root指系统管理员用户-->
            <field name="users" eval="[(4, ref('base.user_root'))]"/>
        </record>
      <!--员工组-->
        <record id="my_task_employee" model="res.groups">
            <field name="name">员工</field>
            <!--category_id关联的应用权限分类-->
            <field name="category_id" ref="module_category_my_task"/>
        </record>
    </data>
</odoo>
  1. 给分组添加权限

添加权限一般在security下的ir.model.access.csv
image.pngcode

  1. 继承权限
<!--员工组-->
        <record id="my_task_employee" model="res.groups">
            <field name="name">员工</field>
            <!--category_id关联的应用权限分类-->
            <field name="category_id" ref="module_category_my_task"/>
            <!--继承基础员工组,添加的员工会自动添加到基础员工中去-->
            <field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
        </record>
  1. 增长预设用户
<field name="users" eval="[(4, ref('base.user_root'))]"/>

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_rule)

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data noupdate="0">
        <!-- Sequences for sale.order -->
        <record id="wf_sale.sale_order_rule" model="ir.rule">
            <field name="name">销售员工访问</field>
            <!--model_id  ref,many2one到模型的id,model_表名-->
            <field name="model_id" ref="model_wf_sale_sale_order"/>
            <!--domain_force过滤条件,订单销售人id是当前登陆用户的id,或者没销售的订单-->
            <field name="domain_force">['|',('sale_people','=',user.id),('sale_people','=',False)]</field>
            <!--指定是哪一个组-->
            <field name="groups" eval="[(4,ref('wf_sale.wf_sale_employee'))]"/>
        </record>
        <record id="wf_sale.sale_order_manage_rule" model="ir.rule">
            <field name="name">销售经理访问</field>
            <field name="model_id" ref="model_wf_sale_sale_order"/>
            <field name="domain_force">[(1,'=',1)]</field>
            <field name="groups" eval="[(4,ref('wf_sale.wf_sale_manage'))]"/>
        </record>
    </data>
</odoo>

参数介绍

  • name:记录规则名称,可随意定义
  • model_id:添加记录规则得model,写法:模块名.model_表名(表名有.须要换成_),内部使用能够加模块名
  • domain_force:记录过滤条件
  • groups:绑定权限生效的组

按钮权限

<button string="回退报价单" 
        type='object' 
        class='oe_highlight' 
        name="action_roll_back"
                groups="wf_sale.wf_sale_manage"
        attrs = "{'invisible':[('state','=','draft')]}"
/>
<button
        string="生成销售单"
        type="object"
        class='oe_highlight'
        name="action_commit_order"
        groups="wf_sale.wf_sale_manage"
        attrs = "{'invisible':[('state','=','approved')]}"
/>
<button string="肯定完成"
        type="object"
        class='oe_highlight'
        name='action_commit_done'
                groups="wf_sale.wf_sale_manage"
        attrs = "{'invisible':[('state','=','done')]}"
/>

经过groups指定权限组id(须要加上模块名)来绑定拥有权限的组,这样只有有权限的人才能看到按钮,而且经过销售的状态来决定是否显示按钮对象

相关文章
相关标签/搜索