Ist*_*era 14 javascript python openerp odoo-10 odoo-11
我的任务:odoo中的动态进度条.
我正在使用Odoo小部件:'progressbar'.我希望每次更新值时更新视图 - 因此我想on_change_input在我的python write方法中触发javascript函数来呈现视图.
@api.one
def updatevalue(self, val):
self.value = val
# TODO call javascript function on_change_input()
Run Code Online (Sandbox Code Playgroud)
目的是,在进程运行时应更新进度条,用户应该在不更新站点的情况下查看进度.
我的任务是否可以使用进度条小部件?或者是否有其他可能在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()
Run Code Online (Sandbox Code Playgroud)
在服务器上,接收并处理命令.有一个开放的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)
Run Code Online (Sandbox Code Playgroud)
每次进度值更改时,我都会调用模块的以下方法:
progress_instance.updatevalue(new_value)
Run Code Online (Sandbox Code Playgroud)
当值等于100%时,我关闭连接
odoo.logout()
Run Code Online (Sandbox Code Playgroud)
account/static/src/js/account_reconciliation_widgets.js此功能已经存在,您可以从方法updateProgressBar和中复制部分功能processReconciliations。您将在这里看到更新进度条的正确方法。
目的是,进度条应该在进程运行时更新,并且用户应该在不更新站点的情况下看到进度。
看看processReconciliations它是如何完成的,基本上你调用process_reconciliations后端存在的方法并返回一个deferred对象。从该延迟对象中,您可以使用progress()
查看您的文档,.progress()您会发现您需要使用以下方式报告您的进度.[notify][2]()
您如何定义流程的完成百分比?
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |