如果說Access right是針對model的CURD,那麼Record rules就是針對每筆資料去設定權限,例如我們不想讓志工層級的人看到休學學生的資料,即使他擁有讀的權限,透過domain,我們便可以設定規則,依照慣例我們來寫一個範例:
<record model="ir.rule" id="volunteer_rule">
<field name="name">Volunteer Rule</field>
<field name="model_id" ref="model_res_student"/>
<field name="domain_force">[('is_active', '=', True)]</field>
<field name="groups" eval="[(4, ref('group_school_volunteer'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="perm_write" eval="False"/>
</record>
model
:固定是ir.rule
id
:規則id,不重複即可
name
:規則名稱,自定義即可
model_id
:關聯之model,同之前設定access right,規則為 "model_"+ Model Name
domain_force
:對model內資料的過濾條件,我們只希望還在學的學生出現在志工觀看名單上,另外可以用'|'或"&"去過濾複數條件
groups
:此規則套用的group,這裡填入我們昨天設定的志工group id
perm_read
:讀取資料權限
perm_create
:建立資料權限
perm_unlink
:刪除資料權限
perm_write
:修改資料權限
注意CURD權限必須至少有一個是True,不能以全否定的方式設定權限
設定好後重啟,我們便會看到新增的Record rules,同樣的記得開啟開發者模式:
如果覺得寫設定檔很麻煩,過去提到的Security的設定都有介面可以新增或修改,也很方便,只要定義的完善Odoo的權限可以設定的越來越細!!
Security的介紹就到這邊了,我們明天來新增Menu icon