Execute RPC queries¶
The basic methods to execute RPC queries related to data models are
execute
and
execute_kw
.
They take at least two parameters (the model and the name of the method to
call) following by additional variable parameters according to the method
called:
>>> order_data = odoo.execute('sale.order', 'read', [1], ['name'])
This instruction will call the read
method of the sale.order
model
for the order ID=1, and will only returns the value of the field name
.
However there is a more efficient way to perform methods of a model by getting
a proxy of it with the
model registry
, which
provides an API almost syntactically identical to the Odoo server side API
(see odoorpc.models.Model
), and which is able to send the user
context automatically:
>>> User = odoo.env['res.users']
>>> User.write([1], {'name': "Dupont D."})
True
>>> odoo.env.context
{'lang': 'fr_FR', 'tz': False}
>>> Product = odoo.env['product.product']
>>> Product.name_get([3, 4])
[[3, '[SERV_COST] Audit externe''], [4, '[PROD_DEL] Commutateur, 24 ports']]
To stop sending the user context, use the odoorpc.ODOO.config
property:
>>> odoo.config['auto_context'] = False
>>> Product.name_get([3, 4]) # Without context, lang 'en_US' by default
[[3, '[SERV_COST] External Audit'], [4, '[PROD_DEL] Switch, 24 ports']]
Note
The auto_context
option only affect methods called from model proxies.
Here is another example of how to install a module (you have to be logged as an administrator to perform this task):
>>> Module = odoo.env['ir.module.module']
>>> module_id = Module.search([('name', '=', 'purchase')])
>>> Module.button_immediate_install(module_id)