oerplib.OERP

class oerplib.OERP(server='localhost', database=None, protocol='xmlrpc', port=8069, timeout=120, version=None)

Return a new instance of the OERP class. The optional database parameter specifies the default database to use when the login method is called. If no database is set, the database parameter of the login method will be mandatory.

XML-RPC and Net-RPC protocols are supported. Respective values for the protocol parameter are xmlrpc, xmlrpc+ssl and netrpc.

>>> import oerplib
>>> oerp = oerplib.OERP('localhost', protocol='xmlrpc', port=8069)

Since the version 0.7, OERPLib will try by default to detect the server version in order to adapt its requests. However, it is possible to force the version to use with the version parameter:

>>> oerp = oerplib.OERP('localhost', version='6.0')
Raise:oerplib.error.InternalError, oerplib.error.RPCError
browse(model, ids, context=None)

Browse one or several records (if ids is a list of IDs) from model. The fields and values for such objects are generated dynamically.

>>> oerp.browse('res.partner', 1)
browse_record(res.partner, 1)
>>> [partner.name for partner in oerp.browse('res.partner', [1, 2])]
[u'Your Company', u'ASUStek']

A list of data types used by browse_record fields are available here.

Returns:a browse_record instance
Returns:a generator to iterate on browse_record instances
Raise:oerplib.error.RPCError
common

New in version 0.6.

The common service (/common RPC service). See the oerplib.service.common.Common class.

config

Dictionary of available configuration options.

>>> oerp.config
{'auto_context': True, 'timeout': 120}
  • auto_context: if set to True, the user context will be sent automatically to every call of a model method (default: True):

    New in version 0.7.

    Note

    This option only works on servers in version 6.1 and above.

    >>> product_osv = oerp.get('product.product')
    >>> product_osv.name_get([3]) # Context sent by default ('lang': 'fr_FR' here)
    [[3, '[PC1] PC Basic']]
    >>> oerp.config['auto_context'] = False
    >>> product_osv.name_get([3]) # No context sent
    [[3, '[PC1] Basic PC']]
    
  • timeout: set the maximum timeout in seconds for a RPC request (default: 120):

    New in version 0.6.

    >>> oerp.config['timeout'] = 300
    
context

The context of the user connected.

>>> oerp.login('admin', 'admin')
browse_record('res.users', 1)
>>> oerp.context
{'lang': 'fr_FR', 'tz': False}
>>> oerp.context['lang'] = 'en_US'
create(model, vals, context=None)

Create a new model record with values contained in the vals dictionary.

>>> partner_id = oerp.create('res.partner', {'name': 'Jacky Bob', 'lang': 'fr_FR'})
Returns:the ID of the new record.
Raise:oerplib.error.RPCError
database

The database currently used.

db

New in version 0.4.

The database management service (/db RPC service). See the oerplib.service.db.DB class.

exec_workflow(model, signal, obj_id)

Execute the workflow signal on the instance having the ID obj_id of model.

Raise:oerplib.error.RPCError
execute(model, method, *args)

Execute the method of model. *args parameters varies according to the method used.

>>> oerp.execute('res.partner', 'read', [1, 2], ['name'])
[{'name': u'ASUStek', 'id': 2}, {'name': u'Your Company', 'id': 1}]
Returns:the result returned by the method called
Raise:oerplib.error.RPCError
execute_kw(model, method, args=None, kwargs=None)

Execute the method of model. args is a list of parameters (in the right order), and kwargs a dictionary (named parameters). Both varies according to the method used.

>>> oerp.execute_kw('res.partner', 'read', [[1, 2]], {'fields': ['name']})
[{'name': u'ASUStek', 'id': 2}, {'name': u'Your Company', 'id': 1}]

Warning

This method only works on servers in version 6.1 and above.

Returns:the result returned by the method called
Raise:oerplib.error.RPCError
get(model)

New in version 0.5.

Return a proxy of the model built from the server (see oerplib.service.osv.Model).

Returns:an instance of oerplib.service.osv.Model
static get_osv_name(browse_record)

Deprecated since version 0.7: use the __osv__ attribute instead (see BrowseRecord).

>>> partner = oerp.browse('res.partner', 1)
>>> oerp.get_osv_name(partner)
'res.partner'
Returns:the model name of the browsable record
inspect

New in version 0.8.

The inspect service (custom service). See the oerplib.service.inspect.Inspect class.

classmethod list(rc_file='~/.oerplibrc')

New in version 0.8.

Return a list of all sessions available in the rc_file file:

>>> import oerplib
>>> oerplib.OERP.list()
['foo', 'bar']

Then, use the load() function with the desired session:

>>> oerp = oerplib.OERP.load('foo')
classmethod load(name, rc_file='~/.oerplibrc')

New in version 0.8.

Return a OERP session pre-configured and connected with informations identified by name:

>>> import oerplib
>>> oerp = oerplib.OERP.load('foo')

Such informations are stored with the OERP.save method.

login(user='admin', passwd='admin', database=None)

Log in as the given user with the password passwd on the database database and return the corresponding user as a browsable record (from the res.users model). If database is not specified, the default one will be used instead.

>>> user = oerp.login('admin', 'admin', database='db_name')
>>> user.name
u'Administrator'
Returns:the user connected as a browsable record
Raise:oerplib.error.RPCError, oerplib.error.Error
port

The port used.

protocol

The protocol used.

read(model, ids, fields=None, context=None)

Return fields values for each model record identified by ids. If fields is not specified, all fields values will be retrieved.

>>> oerp.read('res.partner', [1, 2], ['name'])
[{'name': u'ASUStek', 'id': 2}, {'name': u'Your Company', 'id': 1}]
Returns:list of dictionaries
Raise:oerplib.error.RPCError
refresh(browse_record, context=None)

Restore original values on browse_record with data fetched on the server. As a result, all changes made locally on the record are canceled.

Raise:oerplib.error.RPCError
classmethod remove(name, rc_file='~/.oerplibrc')

New in version 0.8.

Remove the session identified by name from the rc_file file:

>>> import oerplib
>>> oerplib.OERP.remove('foo')
True
report(report_name, model, obj_ids, report_type='pdf', context=None)

Download a report from the server and return the local path of the file.

>>> oerp.report('sale.order', 'sale.order', 1)
'/tmp/oerplib_uJ8Iho.pdf'
>>> oerp.report('sale.order', 'sale.order', [1, 2])
'/tmp/oerplib_giZS0v.pdf'
Returns:the path to the generated temporary file
Raise:oerplib.error.RPCError
reset(browse_record)

Cancel all changes made locally on the browse_record. No request to the server is executed to perform this operation. Therefore, values restored may be outdated.

save(name, rc_file='~/.oerplibrc')

New in version 0.8.

Save the session configuration under the name name. These informations are stored in the ~/.oerplibrc file by default.

>>> import oerplib
>>> oerp = oerplib.OERP('localhost', protocol='xmlrpc', port=8069)
>>> oerp.login('admin', 'admin', 'db_name')
>>> oerp.save('foo')

Such informations can be loaded with the oerplib.load() function by returning a pre-configured session of OERP, or with the oerp command line tool supplied with oerplib.

search(model, args=None, offset=0, limit=None, order=None, context=None, count=False)

Return a list of IDs of records matching the given criteria in args parameter. args must be of the form [('name', '=', 'John'), (...)]

>>> oerp.search('res.partner', [('name', 'like', 'Agrolait')])
[3]
Returns:a list of IDs
Raise:oerplib.error.RPCError
server

The server name.

Delete model records identified by ids.

>>> oerp.unlink('res.partner', [1])
Returns:True
Raise:oerplib.error.RPCError

New in version 0.4.

Delete the record corresponding to browse_record from the server.

>>> partner = oerp.browse('res.partner', 1)
>>> oerp.unlink_record(partner)  # unlink('res.partner', [1])
Returns:True
Raise:oerplib.error.RPCError
user

The browsable record of the user connected.

>>> oerp.login('admin', 'admin') == oerp.user
True
version

The version of the server.

>>> oerp.version
'7.0-20131014-231047'
wizard

New in version 0.6.

The wizard service (/wizard RPC service). See the oerplib.service.wizard.Wizard class.

write(model, ids, vals=None, context=None)

Update model records identified by ids with the given values contained in the vals dictionary.

>>> oerp.write('res.users', [1], {'name': "Administrator"})
True
Returns:True
Raise:oerplib.error.RPCError
write_record(browse_record, context=None)

New in version 0.4.

Update the record corresponding to browse_record by sending its values to the server (only field values which have been changed).

>>> partner = oerp.browse('res.partner', 1)
>>> partner.name = "Test"
>>> oerp.write_record(partner)  # write('res.partner', [1], {'name': "Test"})
Returns:True
Raise:oerplib.error.RPCError

Previous topic

oerplib

Next topic

oerplib.service.osv

This Page