根据访问权限显示按钮
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, Many2one到res.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
应该是 Many2one
到 res.users
按钮默认不可见
访问权限场景:
用户:如果 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, Many2one到res.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
应该是 Many2one
到 res.users