共计 1342 个字符,预计需要花费 4 分钟才能阅读完成。
记录规则
通过记录规则可以灵活地设置权限。
规则保存在 ir.rule 模型表里,需要设置关联某个模型,关联很多组,访问权限控制和 domian。
通过 domain_force 过滤出的一些记录来执行约束。
例子: 经理只能删除状态为 ’cancel’ 的客户线索。注意向 many2many 字段添加值的写法。
<record id=”delete_cancelled_only” model=”ir.rule”>
<field name=”name”>Only cancelled leads may be deleted</field>
<field name=”model_id” ref=”crm.model_crm_lead”/>
<field name=”groups” eval=”[(4, ref(‘base.group_sale_manager’))]”/>
<field name=”perm_read” eval=”0″/>
<field name=”perm_write” eval=”0″/>
<field name=”perm_create” eval=”0″/>
<field name=”perm_unlink” eval=”1″ />
<field name=”domain_force”>[(‘state’,’=’,’cancel’)]</field>
</record>
例子:只有经理可以编辑课程,如果没有经理,任何人都可以编辑
security.xml
<record id=”group_manager” model=”res.groups”>
<field name=”name”>todufiledu / 管理员 </field>
</record>
<record id=”only_responsible_can_modify” model=”ir.rule”>
<field name=”name”> 只有经理可以编辑 </field>
<field name=”model_id” ref=”model_todo_file”/>
<field name=”groups” eval=”[(4, ref(‘todufiledu.group_manager’))]”/>
<field name=”perm_read” eval=”0″/>
<field name=”perm_write” eval=”1″/>
<field name=”perm_create” eval=”0″/>
<field name=”perm_unlink” eval=”1″/>
<field name=”domain_force”>
[‘|’, (‘responsible_id’,’=’,False),
(‘responsible_id’,’=’,user.id)]
</field>
</record>
odoo 设置员工能看自己新建的记录规则 经理能看所有记录的规则
增加 2 个组
组 1 能看全部记录
组 2 增加只能看自己的记录
增加一个经理能看所有记录的规则
关联模型 res.partner
规则填入 [(1,’=’,1)]
组加入 全部记录组
增加一个员工能看自己记录的规则
关联模型 res.partner
规则 [‘|’,(‘user_id’,’=’,user.id),(‘id’,’=’,user.partner_id.id)]
组加入 只能看自己记录组