2017-08-25 11 views
12

私のタスク: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() 
を閉じるには、
+0

進捗バーのフィールドは計算フィールドですか?それでは、常に更新する必要がある理由 –

+0

ここをクリック[email protected]:CybroOdoo/CybroAddons.git#10.0 –

+0

いいえ、プログレスバーフィールド(値)は計算フィールドではありません。これはRPCを介して 'updatevalue'メソッドを呼び出して更新されます。どちらのCybroOdooアドオンを参照していますか? – IstaLibera

答えて

0

この機能はすでに存在し、からupdateProgressBarprocessReconciliationsというメソッドからその一部をコピーできます。進捗バーを更新する正しい方法がここに表示されます。

目的は、プロセス の実行中にプログレスバーを更新する必要があり、ユーザーが サイトを更新せずに進行状況を確認する必要があること、です。

基本的には、バックエンドに存在するprocess_reconciliationsメソッドを呼び出すと、あなたが戻ってdeferredオブジェクトを取得し、それがどのように行われるかprocessReconciliationsで見ます。その繰延オブジェクトから、あなたが.progress()の文書を通じて探しprogress()

を使用することができ、あなたはどのようにあなたのプロセスの完了の割合を定義していますか?.[notify][2]()

を使用して、あなたの進捗状況を報告する必要があることがわかりますか

+0

ありがとうございました!しかし、私があなたのモデルに言及している機能をどのように含めるか分かりません。あなたは私を助けてくれますか?これまでの具体的なワークフローの質問を更新しました。また、私はjavascriptのプログラミングに精通していないので、あなたが私のsamleにマッチするコードを追加すれば本当にうれしいでしょう。 – IstaLibera

+0

私のプロセスの完了率は、すでにフルフィルされたステップ数で定義されます。例えば。タスクは20ステップを実行しなければならず、15ステップが完了します。>完了の割合は75%です。しかし、それは私がちょうどodooの外に知っているsthです - >したがって私はRPC呼び出しで値を更新します。 – IstaLibera

関連する問題