大家好(抱歉我的英语)
我希望能够在屏幕右上角显示通知(弹出类型)。
在我的项目视图中,当在看板视图中将任务从一个阶段转移到另一个阶段时,必须发生这种情况。
我看到了一些教程: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 方法中)
我有类似的需求并通过修改自定义模块的写入方法解决了它。 当用户将看板卡从一个阶段拖动到下一个阶段时,这将显示一个弹出窗口。
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)
需要返回create_notification的结果
return self.create_notification()
同样的问题。从 python 代码启动时不显示通知。