Odoo - 在屏幕右上角显示通知

问题描述 投票:0回答:3

大家好(抱歉我的英语)

我希望能够在屏幕右上角显示通知(弹出类型)。

在我的项目视图中,当在看板视图中将任务从一个阶段转移到另一个阶段时,必须发生这种情况。

我看到了一些教程:https://www.cybrosys.com/blog/how-to-create-user-notification-odoo-13

https://developpaper.com/a-prompt-box-pops-up-in-the-upper-right-corner-of-odoo-13/

但它们不能满足我的需求。在这些示例中,按下按钮时会调用“弹出”通知。但我不想从按钮调用通知,而是从函数调用通知(但什么也没有发生)

我确实喜欢这样:

def create_notification(self):
    return {
        'type': 'ir.actions.client',
        'tag': 'display_notification',
        'params': {
            'title': _('Warning!'),
            'message': 'My message',
            'sticky': False,
        }
    }


@api.onchange('stage_id')
def verification_changement_etape(self):
    ...blablabla...
    if self.type_temps.id:    # APPEL DE LA NOTIFICATION
        self.create_notification()

但没什么可做的,create_notification() 函数似乎只有在从按钮操作调用时才起作用。

如果你能帮助我,那就太好了!

(或者计划 B:从我的 python 代码中调用我的 XML 按钮,该按钮调用我的通知) 如果有人可以告诉我如何从 python 调用 XML 按钮...在互联网上我只能找到相反的操作方式。

编辑:

感谢您的回复。我不想要阻止通知(强制用户单击“确定”将其关闭)。我想要的是信息丰富的通知,就像上面链接中的通知一样。

(彩色通知)

问题是,要使它们出现,只有从按钮(单击)调用该方法似乎才有效。我无法从我的 python 代码中进行调用(例如在 write 方法中)

python odoo
3个回答
1
投票

我有类似的需求并通过修改自定义模块的写入方法解决了它。 当用户将看板卡从一个阶段拖动到下一个阶段时,这将显示一个弹出窗口。

def write(self, vals):
    if 'stage_id' in vals:
        if vals['stage_id'] == 'xyz' and self.type_temps.id:    # APPEL DE LA NOTIFICATION: 
                raise UserError(_('Notification Popup'))
    return super(CustomModule, self).write(vals)

0
投票

需要返回create_notification的结果

return self.create_notification()

0
投票

同样的问题。从 python 代码启动时不显示通知。

© www.soinside.com 2019 - 2024. All rights reserved.