在Odoo中,我们可以通过列表导出功能将数据导出为Excel或CSV格式。然而,默认情况下,所有用户都可以使用此功能导出数据。在某些情况下,您可能希望限制某些用户或用户组的列表导出权限。在本博客中,我们将探讨如何在Odoo 15(master)中实现列表导出权限控制。
定制列表导出权限
首先,我们需要添加一个特定的权限来控制列表导出。我们可以在模型的权限设置中添加一个新的权限。在本例中,我们将在"res.partner"模型中添加一个名为"Export"的新权限。
<record id="res_partner_export" model="ir.model.access">
<field name="name">Partner: Export</field>
<field name="model_id" ref="model_res_partner"/>
<field name="group_id" ref="base.group_user"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
<field name="perm_unlink" eval="False"/>
<field name="perm_export" eval="True"/>
</record>
在上面的代码中,我们将perm_export
字段设置为True来允许导出权限。同时,我们将perm_read
、perm_write
、perm_create
、perm_unlink
字段设置为False,以防止对数据进行其他操作。
将导出按钮与访问权限关联
接下来,我们需要将导出按钮与我们刚刚创建的权限关联起来,以便仅允许具有"res_partner_export"特定权限的用户使用导出功能。我们可以通过修改视图来实现这一点。在本例中,我们将修改"res.partner"的树视图。
<odoo>
<data>
<!-- 修改res.partners列表视图 -->
<record id="view_partner_tree" model="ir.ui.view">
<field name="name">res.partner.tree</field>
<field name="model">res.partner</field>
<!-- 替换原有tree视图的arch字段内容 -->
<field name="arch" type="xml">
<tree>
<!-- 添加一个按钮 -->
<button name="%(res_partner.action_partner_export)d" string="Export"
class="oe_highlight" type="action"
groups="base.group_user,res_partner.group_res_partner_export"/>
<field name="name"/>
...
<!-- 其他的字段 -->
...
</tree>
</field>
</record>
</data>
</odoo>
在上述代码片段中,我们添加了一个名为"Export"的按钮,并将其关联到res_partner.action_partner_export
操作。我们还将按钮关联到用户组base.group_user
,以确保普通用户也可以看到该按钮。然而,为了限制只有拥有"res_partner_export"权限的用户可以使用该按钮,我们需要创建一个名为res_partner.group_res_partner_export
的新用户组。
创建自定义用户组
我们可以通过继承base.group_user
用户组来创建我们的自定义用户组。在本例中,我们将创建一个名为"Partner Export"的用户组。
<odoo>
<data>
<!-- 创建新用户组 -->
<record id="group_res_partner_export" model="res.groups">
<field name="name">Partner Export</field>
<field name="category_id" ref="base.module_category_user_management"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<!-- 将导出权限分配给新用户组 -->
<record model="ir.module.category.group" id="module_category_group_res_partner_export">
<field name="category_id" ref="base.module_category_user_management"/>
<field name="group_id" ref="res_partner_export"/>
<field eval="1" name="sequence"/>
</record>
</data>
</odoo>
在上述代码片段中,我们创建一个名为"Partner Export"的新用户组,并将其添加到base.group_user
用户组的implied_ids
字段中,以确保该用户组继承了base.group_user
的所有权限。然后,我们将导出权限分配给新用户组,确保只有属于该用户组的用户才能使用导出功能。
更新用户访问权限
最后,我们需要分配导出权限给特定的用户或用户组。我们可以在Odoo的用户/用户组设置中执行此操作。在本例中,我们将分配"Partner Export"用户组给特定的用户。
验证列表导出权限
在完成上述配置后,我们可以验证导出权限是否正常工作。登录到Odoo并导航到"Contacts"面板。在"Partners"列表视图中,您将看到一个名为"Export"的按钮。当您点击此按钮时,只有具有"res_partner_export"权限的用户才能下载导出的数据。
这就是如何在Odoo 15(master)下实现列表导出权限控制的方法。通过跟随本博客中的步骤,您可以轻松控制哪些用户可以使用导出功能,并保护您的敏感数据。希望对您有所帮助!
本文来自极简博客,作者:清风徐来,转载请注明原文链接:odoo15(master)下,列表导出权限控制