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(須要加上模塊名)來綁定擁有權限的組,這樣只有有權限的人才能看到按鈕,而且經過銷售的狀態來決定是否顯示按鈕對象

相關文章
相關標籤/搜索