23.如果是新创建的model,原来没有的,则需要在ir.model.access.csv权限文件中添加模型权限,然后重启升级,格式:
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
id唯一,name唯一,model_id(model_model名称),group_id:id可忽略,1,1,1,1
菜单权限,添加权限组:
1.创建用户组;2.创建用户组的用户类型;3.将用户绑定到菜单上;
noupdate="1"代表升级模块时不对数据权限文件进行操作;
noupdate="0"代表升级模块时对数据权限文件进行更新;
<data noupdate="1">
<!--用户和用户组,用来设置菜单权限-->
<!--创建用户组-->
<record id="module_category_write_off_system" model="ir.module.category">
<field name="name">核销权限组</field>
<field name="description">Helps you manage your manufacturing processes and generate reports on those processes.</field>
<!--<field name="sequence">5</field>-->
</record>
<!--创建用户组的用户类型-->
<record id="group_write_off_manager" model="res.groups">
<field name="name">客户经理</field>
<!--继承哪些角色的权限,base.group_user为普通用户-->
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
<!--属于哪个用户组-->
<field name="category_id" ref="module_category_write_off_system"/>
</record>
</data>
使用方式:
<menuitem id="menu_write_off_list" name="核销清单" parent="write_off_system" action="act_write_off_list" groups="group_write_off_manager,group_write_off_user"/>
2.权限规则,在菜单权限的基础上进行权限细化,比如规定了菜单可视化的用户,需要点击菜单后显示的数据是在这个用户下绑定的,看不到其他用户的相关联的数据;
<!--权限规则-->
<!--客户经理只能看到自己的核销申请单-->
<record id="write_off_list_rule" model="ir.rule">
<field name="name">write_off_list_access</field>
<field name="model_id" ref="model_write_off_list"/>
<field name="global" eval="[(4,ref('group_write_off_manager'))]"/>
<field name="domain_force">[('customer_manager','=',user.id)]</field>
</record>
<!--核保专员只能看到分配给自己的任务-->
<record id="write_off_route_task_rule" model="ir.rule">
<field name="name">write_off_route_task_access</field>
<field name="model_id" ref="model_write_off_route"/>
<!--针对所有用户-->
<!--<field name="global" eval="True"/>-->
<!--针对某个用户组的-->
<field name="groups" eval="[(4,ref('group_write_off_commissioner'))]"/>
<field name="domain_force">[('write_off_person','=',user.id)]</field>
</record>
其中的model_id,指源model,ref的格式是model_model名称,domain_force指定筛选条件;
3.对于有用户组的菜单进行分组:
<record id="group_purchase_menu" model="res.groups">
<field name="name">采购菜单</field>
</record>
<record id="purchase.menu_purchase_rfq" model="ir.ui.menu">
<field name="groups_id" eval="[(6,0,[ref('group_purchase_menu')])]"/>
</record>
创建一个用户组,然后用(6,0,[ ])来清除原有的用户组,赋予新的用户组,这个写法简单;
4.如果权限出现问题,大概就是这几个原因:
1)没有给菜单增加指定的权限组;
2)没有给csv增加模型权限;
5.增加权限,可以首先考虑,增加一个公共的权限组,一方面是考虑用来增加模型权限指定组,一方面是考虑用来给所有的一级菜单或者二级菜单增加公共组,只有一个名字,方便给多个菜单加组,这样一来,所有的组都能访问每个菜单,但是只要有一个菜单增加了不同的权限组,那么其他的权限组就看不到这个菜单;
比如:一级菜单menu,menu下的具有action的子菜单sub,公共权限组public,继承public的权限组A和B,如果menu加了public,那么A和B都可以访问sub,如果sub加了A,那么B就看不到sub了