如何在自定义模块中创建新的用户组?

How can you create new user group in a custom module?

我想为特定组的新模型分配权限。这个新组将被称为 "Product Extended User",因为它允许访问 "Product Extended" 模型和自定义模块。

如果我在 ir.mode.access.csv 中这样做,我希望能够为特定型号启用对该组的访问。

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_extended_user_group,product.extended.user,model_product_extended,base.group_product_extended_user,1,1,1,1

但是,该组未创建,因此 XMLID base.group_product_extended_user 不存在,我怀疑它是否必须以 base..

作为前缀

如何创建这样的组,不是手动而是从自定义模块数据文件中导入?

首先创建ir.model.access.csv文件并添加以下代码。

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_extended_user,product.extended.user,model_product_extended,module_name.group_product_extended_user,1,1,1,1

在这种情况下,模型名称是 product.extended,组名称是 group_product_extended_user

之后,您需要将此代码添加到 xml 文件中。

<record model="res.groups" id="group_product_extended_user">
    <field name="name">Group name</field>
    <field name="category_id" ref="module.category_id"/>
</record>

将此 xmlir.model.access.csv 文件添加到清单文件的数据属性中。您将可以通过这种方式创建群组。

How do you then refer to this specific group in the ir.model.access.csv file, provided that both xml and ir.model.access.csv are defined in the same module?

  1. 在您的 __openerp__.py(或较新的 Odoo 版本中的 __manifest__.py)文件中,确保创建组的文件在 ir.model.access.csv 文件之前加载。

  2. 像任何其他组一样称呼它:your_module_name.group_xml_id

ir.model.access.csv

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_product_extended_user_group,product.extended.user,model_product_extended,your_module_name.group_xml_id,1,1,1,1