權限組是爲了將人員按組劃分同一分配權限。權限組的創建是基於每一個應用來實現的app
創建一條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>
<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>
添加權限一般在security下的ir.model.access.csv
code
<!--員工組--> <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>
<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
<?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>
<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(須要加上模塊名)來綁定擁有權限的組,這樣只有有權限的人才能看到按鈕,而且經過銷售的狀態來決定是否顯示按鈕對象