proteus 7.2.0

Creator: bradpython12

Last updated:

Add to Cart

Description:

proteus 7.2.0

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

Example of usage

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



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

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


There is also the config.set_xmlrpc method which can be used to connect
using a URL, and the config.set_xmlrpc_session method (when used as a
context manager) which connects for a session.


Activating 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')])
>>> party_module.click('activate')
>>> Wizard('ir.module.activate_upgrade').execute('upgrade')




Creating a party
First instantiate a new Party:

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


Fill the fields:

>>> party.name = 'ham'


Save the instance into the server:

>>> party.save()
>>> party.name
'ham'
>>> party.id > 0
True




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.save()
>>> party.lang.code
'en'




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 = party.addresses.new(postal_code='42')
>>> party.save()
>>> party.addresses #doctest: +ELLIPSIS
[proteus.Model.get('party.address')(...)]




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()
>>> category.name = 'spam'
>>> category.save()


Append it to categories of the party

>>> party.categories.append(category)
>>> party.save()
>>> party.categories #doctest: +ELLIPSIS
[proteus.Model.get('party.category')(...)]




Print party label
There is a label report on Party.

>>> label = Report('party.label')


The report is executed with a list of records and some extra data.

>>> type_, data, print_, name = label.execute([party], {})




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 = party.addresses.new(postal_code='69')
>>> party.save()
>>> address = party.addresses.new(postal_code='23')
>>> party.save()


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.save()
>>> party.addresses == reversed_addresses
True




Setting context
Make French translatable:

>>> Language = Model.get('ir.lang')
>>> french, = Language.find([('code', '=', 'fr')])
>>> french.translatable = True
>>> french.save()


Create a category in English:

>>> Category = Model.get('party.category')
>>> with config.set_context(language='en'):
... category = Category(name="Category")
... category.save()


Translate in French:

>>> with config.set_context(language='fr'):
... category_fr = Category(category.id)
... category_fr.name = "Categorie"
... category_fr.save()


Read in English:

>>> category.reload()
>>> category.name
'Category'


Read in French:

>>> category_fr.reload()
>>> category_fr.name
'Categorie'

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.