2017-06-17 20 views
1

我已經在Odoo 10中定義了一個服務器操作。在視圖中創建按鈕可以很容易地使用服務器操作ID調用該服務器操作。例如,如果服務器操作ID是123:如何使用API​​調用Odoo服務器

<button name="123" type="action" string="Run Action"/> 

有什麼方法可以通過API調用此操作嗎?我不確定如何執行此操作,因爲服務器操作沒有方法名稱。這只是一個ID。我也需要能夠傳遞上下文到行動。這可能嗎?

+0

通過_the API_你的意思是XML/JSON RPC? – Naglis

+0

是的,我的意思是xml rpc API – flyingL123

回答

2

在Odoo的基本模塊中,定義了模型ir.actions.server(base/ir/ir_actions.py)。有一種方法叫做run,它應該可以從XMLRPC API調用。

要使用一個背景下,只需添加它命名爲context電話作爲關鍵字參數(kwargs),如:

models.execute_kw(db, uid, password, 
    'res.partner', 'check_access_rights', 
    ['read'], {'raise_exception': False, 'context': {'test': True}}) 

(例子來自official example 'Calling Methods'擴展)這似乎是一個有點神奇,但是它完成了here

+0

但是我怎樣才能用上下文來調用這個run方法呢?該方法是否需要在上下文中傳遞active_model和active_id?否則,您無法訪問操作代碼中的記錄。 – flyingL123

+0

你可以隨時用本地創建的上下文來調用它。你如何使用API​​:本地或在Python庫(如oerpeek)的幫助下? – CZoellner

+0

你能詳細說明你的意思嗎?你總是可以用本地創建的上下文來調用它?我使用[this library](https://github.com/DarkaOnLine/Ripcord)從PHP腳本調用API。看看[Odoo文檔](http://www.odoo.com/documentation/10.0/api_integration.html),我沒有看到任何將'context「傳遞給方法的方法。它表示每次調用execute_kw都需要一個按位置傳遞的參數的數組/列表,以及通過關鍵字傳遞參數的映射/字典(可選)。它沒有提到任何有關將'context「傳遞給方法的信息。 – flyingL123