A library to access Tryton’s models like a client.



Example of usage

>>> from proteus import config, Model, Wizard, Report


Configuration to connect to a sqlite memory database using trytond as module.

>>> config = config.set_trytond('sqlite:///:memory:')

Installing a module

Find the module, call the activate button and run the upgrade wizard.

>>> Module = Model.get('ir.module')
>>> party_module, = Module.find([('name', '=', 'party')])
>>> Wizard('ir.module.activate_upgrade').execute('upgrade')

Creating a party

First instanciate a new Party:

>>> Party = Model.get('')
>>> party = Party()
>>> < 0

Fill the fields:

>>> = 'ham'

Save the instance into the server:

>>> > 0

Setting the language of the party

The language on party is a Many2One relation field. So it requires to get a Model instance as value.

>>> Lang = Model.get('ir.lang')
>>> en, = Lang.find([('code', '=', 'en')])
>>> party.lang = en
>>> party.lang.code

Creating an address for the party

Addresses are store on party with a One2Many field. So the new address just needs to be appended to the list addresses.

>>> address ='42')
>>> party.addresses 

Adding category to the party

Categories are linked to party with a Many2Many field.

So first create a category

>>> Category = Model.get('party.category')
>>> category = Category()
>>> = 'spam'

Append it to categories of the party

>>> party.categories.append(category)
>>> party.categories 

Sorting addresses and register order

Addresses are ordered by sequence which means they can be stored following a specific order. The set_sequence method stores the current order.

>>> address ='69')
>>> address ='23')

Now changing the order.

>>> reversed_addresses = list(reversed(party.addresses))
>>> while party.addresses:
...     _ = party.addresses.pop()
>>> party.addresses.extend(reversed_addresses)
>>> party.addresses.set_sequence()
>>> party.addresses == reversed_addresses


If you encounter any problems with Tryton, please don’t hesitate to ask questions on the Tryton bug tracker, mailing list, wiki or IRC channel: