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/