Metadata-Version: 2.0
Name: proteus
Version: 3.0.6
Summary: Library to access Tryton server as a client
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: UNKNOWN
License: LGPL-3
Download-URL: http://downloads.tryton.org/3.0/
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Plugins
Classifier: Framework :: Tryton
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Legal Industry
Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Topic :: Office/Business
Requires-Dist: python-dateutil
Provides-Extra: cdecimal
Requires-Dist: cdecimal; extra == 'cdecimal'
Provides-Extra: simplejson
Requires-Dist: simplejson; extra == 'simplejson'
Provides-Extra: trytond
Requires-Dist: trytond (>=3.0,<3.1); extra == 'trytond'

proteus
=======

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

Installing
----------

See INSTALL

Example of usage
----------------

    >>> from proteus import config, Model, Wizard

Creating a database
~~~~~~~~~~~~~~~~~~~

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

    >>> config = config.set_trytond(':memory:', database_type='sqlite')

When connecting to a database that doesn't exist, Proteus will create it.
If no database name was given, then Proteus will generate one. It will choose
':memory': for 'sqlite' type otherwise `'test_%' % int(time.time())`.

Installing a module
~~~~~~~~~~~~~~~~~~~

Find the module, call the install button and run the install wizard.

    >>> Module = Model.get('ir.module.module')
    >>> (party,) = Module.find([('name', '=', 'party')])
    >>> Module.install([party.id], config.context)
    >>> Wizard('ir.module.module.install_upgrade').execute('upgrade')

Creating a party
~~~~~~~~~~~~~~~~

First instanciate 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
    u'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_US')])
    >>> party.lang = en
    >>> party.save()
    >>> party.lang.code
    u'en_US'

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()
    >>> 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')(...)]

Support
-------

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:

  http://bugs.tryton.org/
  http://groups.tryton.org/
  http://wiki.tryton.org/
  irc://irc.freenode.net/tryton

License
-------

See LICENSE

Copyright
---------

See COPYRIGHT


For more information please visit the Tryton web site:

  http://www.tryton.org/


