【问题标题】:Show button based on access rights根据访问权限显示按钮
【发布时间】:2021-11-19 09:50:09
【问题描述】:

按钮默认是不可见的。

访问权限场景:
用户:如果 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>

知道如何以另一种方式实现它吗?

【问题讨论】:

    标签: xml button odoo usergroups access-rights


    【解决方案1】:

    请注意,create_uid 存储创建记录的人,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

    【讨论】:

      猜你喜欢
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多