odoo15(master)下,列表导出权限控制

清风徐来 2019-11-06 ⋅ 35 阅读

在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_readperm_writeperm_createperm_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)下实现列表导出权限控制的方法。通过跟随本博客中的步骤,您可以轻松控制哪些用户可以使用导出功能,并保护您的敏感数据。希望对您有所帮助!


全部评论: 0

    我有话说: