我的任务:在Odoo中创建一个动态进度条。
我正在使用Odoo小部件:'progressbar'。 我希望在每次更新值时更新视图-因此我想在Python写方法中触发on_change_input
JavaScript函数以呈现视图。
@api.one
def updatevalue(self, val):
self.value = val
# TODO call javascript function on_change_input()
目的是在进程运行时更新进度条,并且用户应该在无需更新网站的情况下看到进度。
使用progressbar小部件是否可以实现我的任务?还是在Odoo中有其他显示动态内容的可能性?
如果我将我的updatevalue
方法用作按钮,则单击按钮后会更新进度条,而不调用JavaScript函数并且不刷新页面...但我确实想在我的代码中调用该方法(可能通过rpc),因此这没有帮助-.-
感谢您的时间!
以下是我目前的工作流程:
用户单击do_time_consuming_task
按钮,然后调用以下函数:
def do_timeconsuming_task(self):
ws = websocket.WebSocket()
ws.connect('ws:/129.0.0.1:1234/')
data = { 'topic' : 'server_command', 'id' : self.id, 'commandName' : 'do_sth',}
payload = ujson.dumps(data)
ws.send(payload)
ws.close()
在服务器上,命令被接收并处理。存在一个开放的rpc连接:
odoo = odoorpc.ODOO("129.0.0.1", port=8069)
odoo.login("database", "user", "password")
my_module = odoo.env['my_module.progress_widget_test']
progress_instance = my_module.browse(id)
每次进度值更改时,我会调用我的模块的以下方法:
progress_instance.updatevalue(new_value)
当值等于 100% 时,我关闭连接
odoo.logout()