14

我的任务:odoo 中的动态进度条。

我正在使用 Odoo 小部件:“进度条”。我想在每次更新值时更新视图 - 因此我想on_change_input在我的 python 写入方法中触发 javascript 函数来呈现视图。

 @api.one
 def updatevalue(self, val):
      self.value = val
      # TODO call javascript function on_change_input()

目的是,在进程运行时应该更新进度条,并且用户应该在不更新站点的情况下看到进度。

进度条小部件可以完成我的任务吗?或者是否有另一种可能在 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()
4

1 回答 1

2

此功能已经存在,您可以account/static/src/js/account_reconciliation_widgets.js从方法updateProgressBarprocessReconciliations. 您将在这里看到更新进度条的正确方法。

目的是,在进程运行时应该更新进度条,并且用户应该在不更新站点的情况下看到进度。

看看processReconciliations它是如何完成的,基本上你调用process_reconciliations后端存在的方法并返回一个deferred对象。从该延迟对象中,您可以使用progress()

查看您的文档.progress()会发现您需要使用以下方式报告您的进度.[notify][2]()

如何定义流程的完成百分比?

于 2017-09-06T09:18:51.780 回答