上面的需求是:为 ”设计识图“ 这个菜单添加权限: 只有在设置 > 用户和公司 > 用户组中,会有一个名为“辅助组-设计识图”打钩后,才会显示这个菜单项:
实现上面的需求共三步:
1、在本模块的security目录下的\security\ir.model.access.csv 下为模型添加权限(如果有子表的话,也要添加权限):
id_ss_design_literacy_group_design,name_ss_design_literacy_group_design,ss_picture.model_ss_design_literacy,group_design,1,1,1,1
id_ss_design_literacy_result_group_design,name_ss_design_literacy_result_group_design,ss_picture.model_ss_design_literacy_result,group_design,1,1,1,1
ss_design_literacy:模型名 group_design :组名 ss_picture:模块名
2、在本模块的security目录下的\security\ir.model.access.xml 下定义组与安全规则
<?xml version="1.0" encoding="utf-8"?> <odoo> <data noupdate="0"> <!--定义一个新的用户组 --> <record id="group_design" model="res.groups"> <!--这里的‘group_design’ 就是第一步中的组名,这个一定要一致,否则会报错。--> <field name="name">辅助组-设计识图</field> <field name="category_id" ref="base.module_category_ss_picture"/> </record> <!-- 为模型定义安全规则 --> <record id="rule_designer_only" model="ir.rule"> <field name="name">只有设计师可以访问</field> <field name="model_id" ref="model_ss_design_literacy"/> <field name="groups" eval="[(4, ref('ss_picture.group_design'))]"/> <field name="domain_force">[(1, '=', 1)]</field> <field name="perm_read" eval="1"/> <field name="perm_write" eval="1"/> <field name="perm_create" eval="1"/> <field name="perm_unlink" eval="1"/> </record> </data> </odoo>
以下是对上面代码的详细解释:
<!-- 定义一个新的用户组 --> <record id="group_design" model="res.groups"> <!-- 在res.groups模型中创建一个新的记录,其ID为group_design,这个ID是唯一的标识符,确保它在模块中是唯一的,避免重复。 --> <field name="name">辅助组-设计识图</field> <!-- 用户组的显示名称为“辅助组-设计识图”。 --> <field name="category_id" ref="base.module_category_ss_picture"/> <!-- 关联到“base.module_category_ss_picture”这个权限分类。这意味着该用户组将在该分类下显示。 --> </record> <!-- 为模型定义安全规则 --> <record id="rule_designer_only" model="ir.rule"> <!-- 在ir.rule模型中创建一个新的记录,其ID为rule_designer_only,这个ID是唯一的标识符,确保它在模块中是唯一的,避免重复。 --> <field name="name">只有设计师可以访问</field> <!-- 该安全规则的显示名称为“只有设计师可以访问”。 --> <field name="model_id" ref="model_ss_design_literacy"/> <!-- 这个规则适用于“model_ss_design_literacy”模型。确保你的模型名称是正确的并且已经被定义。 --> <field name="groups" eval="[(4, ref('ss_picture.group_design'))]"/> <!-- 该规则只适用于“ss_picture.group_design”用户组。这意味着只有该用户组的成员受此规则约束。4代表添加操作,将指定的组添加到此规则中。 --> <field name="domain_force">[(1, '=', 1)]</field> <!-- 定义了该规则的适用域。这里的域表示对所有记录都适用,因为1=1始终为真。 --> <field name="perm_read" eval="1"/> <!-- 允许用户组成员读取记录。 --> <field name="perm_write" eval="1"/> <!-- 允许用户组成员修改记录。 --> <field name="perm_create" eval="1"/> <!-- 允许用户组成员创建新记录。 --> <field name="perm_unlink" eval="1"/> <!-- 允许用户组成员删除记录。 --> </record>
3、在本模块的\views\目录下的xml文件中,添加以下代码
<menuitem id="menu_design_literacy" name="设计识图" parent="ss_picture.ss_picture_menu" action="ss_design_literacy_action" groups="ss_picture.group_design"/>
完成综上步骤后,升级所在模块后,就可以看到最上面图中所显示的菜单了。本页面中的两个按钮。我用了css进行了美化和位移。
标签:菜单,group,ss,识图,design,odoo,model,权限,literacy From: https://www.cnblogs.com/lyt263/p/17767349.html