更改odoo 12中的应用程序访问用户权限

Change application access user right in odoo 12


我想更改应用程序访问用户权限。
在 Mark Demo 中,Administration 是选择字段,它具有 Access Rights.
的权限 我想将其更改为 设置
在 python 文件中 self.env.user.has_group('base.group_system') returns 错误。
这意味着在选择字段中,它使用 空白或访问权限
我怎样才能将它更改为 设置
我在基地找到了这个小组。

<record model="res.groups" id="group_system">
    <field name="name">Settings</field>
    <field name="implied_ids" eval="[(4, ref('group_erp_manager'))]"/>
    <field name="users" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>

当我们更改 Administration 字段的值并单击 save 按钮时,Odoo 像往常一样调用 write 方法,在这种情况下,Odoo 做的第一件事是调用 _remove_reified_groups 方法从值中删除 reified group fields (在您的示例中为 sel_groups_2_3 )并计算 groups_id 的值,然后将其添加到要在下一步中写入的值(调用 super 时).

_remove_reified_groups 计算要从 groups_id 添加或删除的组。如果 reified group field 出现在值中并且有一个值,它将被添加到 groups_id,每次 reified group field 出现在值中时,方法调用 get_selection_groups(key) 来计算组要删除,方法 returns 字段名称中存在的组 ID。对于管理字段 sel_groups_2_3,该方法将 return [2, 3].

要在更新 Administration 组时重现相同的结果,我们需要删除字段名称中使用的组,然后将所选组添加到 groups_id (values['groups_id'] = [(3, 2), (3, 3), (4, 3)])

用于将 Mark demo 管理组设置为 Settings 组的 XML 代码应该是:

<record id="base.user_demo" model="res.users">
    <field name="groups_id" eval="[(3,ref('base.group_erp_manager')),(3,ref('base.group_system')),(4,ref('base.group_system'))]"/>
</record>