根据访问权限显示按钮

Show button based on access rights

按钮默认不可见

访问权限场景:
用户:如果 create_uid 不等于 partner_id
,该按钮将显示 经理:这个按钮会一直显示。

我所做的是:

<xpath expr="//button[@name='action_custom_approve']" position="attributes">
    <attribute name="attrs">attrs="{'visible':[('groups_ids','=','group_user'),('groups_ids','=','group_manager')]}"</attribute>
</xpath>

关于如何以其他方式实现它的任何想法?

注意create_uid stores who created the record, Many2oneres.users。您只需提供 attrs 值(不包括 attrs

遗憾的是,您不能在 attrs 域中使用 partner_id,但您可以根据实现上述逻辑的计算布尔字段隐藏按钮。

例如,如果我们定义一个布尔字段,如下所示:

button_state = fields.Boolean(compute="_compute_button_state")

@api.depends('create_uid', 'partner_id')
def _compute_button_state(self):
    for record in self:
        record.button_state = (record.partner_id != record.create_uid and self.env.user.has_group("group_user")) or self.env.user.has_group("group_manager")

要隐藏基于该字段的按钮,我们使用以下语法:

<xpath expr="//button[@name='action_custom_approve']" position="attributes">
    <attribute name="attrs">{'invisible': [('button_state', '=', False)]}</attribute>
</xpath>

在上面的例子中,partner_id 应该是 Many2oneres.users