私のタスク:odooの動的プログレスバー。Odoo10/Odoo11動的プログレスバー - Python内でjavascript関数を起動する
私はOdooウィジェット「progressbar」を使用しています。私は値が更新されるたびにビューを更新したいので、ビューをレンダリングするためのPythonのwriteメソッドの中でon_change_input
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()
を閉じるには、
進捗バーのフィールドは計算フィールドですか?それでは、常に更新する必要がある理由 –
ここをクリック[email protected]:CybroOdoo/CybroAddons.git#10.0 –
いいえ、プログレスバーフィールド(値)は計算フィールドではありません。これはRPCを介して 'updatevalue'メソッドを呼び出して更新されます。どちらのCybroOdooアドオンを参照していますか? – IstaLibera