zoukankan      html  css  js  c++  java
  • odoo 权限问题

    odoo 权限问题

    权限组问题

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

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

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

    <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.png

    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)

    记录权限(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(需要加上模块名)来绑定拥有权限的组,这样只有有权限的人才能看到按钮,并且通过销售的状态来决定是否显示按钮

  • 相关阅读:
    Zend_Controller架构
    PHP构造函数的执行顺序
    MySQL性能优化的最佳21条经验
    MySQL触发器学习总结
    使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
    手动释放你的资源(Please release resources manually)
    InfoPath/SharePoint/WebParts项目组章程 无为而为
    解决错误:sql_variant is incompatible with xml (ASP.NET 2.0 / XML数据类型 ) 无为而为
    使用ISA2004发布SharePoint网站到外部网,需要使用链接转换 无为而为
    InfoPath/SharePoint/WebParts项目组 下一步的工作和团队未来的规划给队员的公开信 无为而为
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/10784031.html
Copyright © 2011-2022 走看看