通过组权限来实现权限管理,组是保存在res.groups里的一些记录。菜单的权限可以通过xml中菜单的定义设置组权限。菜单下关联的model也要设置对象级别的访问权限(read, write, create, unlink),并关联到特定组。还有一些model.py里的做权限检查或xml定义中设置field相关的组。
1 <?xml version="1.0" encoding="utf-8" ?>
2 <odoo>
3 <data>
4 <record model="res.groups" id="group_manager">
5 <field name="name">管理</field>
6 </record>
7
8 <record id="only_responsible_can_modify" model="ir.rule">
9 <field name="name">只有课程负责人可以编辑课程</field>
10 <field name="model_id" ref="model_odoogoedu_course"/>
11 <field name="groups" eval="[(4, ref('odoogoedu.group_manager'))]"/>
12 <field name="perm_read" eval="0"/>
13 <field name="perm_write" eval="1"/>
14 <field name="perm_create" eval="0"/>
15 <field name="perm_unlink" eval="1"/>
16 <field name="domain_force">
17 ['|', ('responsible_id','=',False),
18 ('responsible_id','=',user.id)]
19 </field>
20 </record>
21 </data>
22 </odoo>