You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Odoo 12中添加新用户访问组?附配置示例

解决Odoo 12中自定义访问组显示在应用分组的问题

嘿,我看你遇到的问题是自定义的访问组被归类到了应用分组里,这是因为你创建了一个新的ir.module.category(也就是应用分类),然后把你的组都关联到这个分类上了。Odoo里,ir.module.category对应的是应用模块的分类,这类分组默认会在应用列表的「访问权限」区域显示;如果想让组出现在用户表单的「访问权限」标签下的业务功能分组里,咱们可以调整配置来解决。

方案一:把组关联到现有业务分类

如果你希望这些部门权限组和HR模块的权限组放在一起,直接把category_id改成HR模块的访问权限分类ID就行,比如hr.module_category_hr_access_rights

<!-- 可以删除之前创建的module_security_app记录,不需要再保留独立应用分类 -->
<record id="group_user_app" model="res.groups">
 <field name="name">Department User</field> <!-- 加个前缀区分默认HR组,更清晰 -->
 <field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
 <field name="users" eval="[(4, ref('base.user_root'))]"/>
 <!-- 关联到HR模块的访问权限分类 -->
 <field name="category_id" ref="hr.module_category_hr_access_rights"/>
</record>
<record id="group_manager_app" model="res.groups">
 <field name="name">Department Manager</field>
 <field name="implied_ids" eval="[(4, ref('group_user_app'))]"/>
 <field name="category_id" ref="hr.module_category_hr_access_rights"/>
</record>

方案二:保留自定义分类(可选)

如果你确实需要自己独立的分类,其实ir.module.category本身就是应用级别的分类,所以它一定会出现在应用分组里。不过如果只是想让用户在编辑用户时能看到这个自定义分组,那你可以保留原来的module_security_app,但要确保模块依赖正确配置,在__manifest__.py里加上hr依赖:

# __manifest__.py
{
    'name': 'Department Security Access',
    'version': '1.0',
    'depends': ['base', 'hr'],
    'data': [
        'security/your_security_config.xml',
    ],
    'installable': True,
}

问题根源解释

Odoo的res.groups(访问组)是通过category_id关联到ir.module.category的,而后者就是应用模块的分类容器。你之前新建了一个应用分类,所以你的组自然就被归到那个应用分组里了。把它改成业务模块的分类,组就会出现在用户表单对应的业务权限区域里。

验证步骤

  1. 保存修改后的XML和__manifest__.py文件
  2. 在Odoo后台升级你的自定义模块
  3. 打开「设置 > 用户与公司 > 用户」,编辑任意用户,切换到「访问权限」标签,就能看到你的自定义组出现在对应区域了

内容的提问来源于stack exchange,提问作者Boubaker

火山引擎 最新活动