作为客户端访问tryton服务器的库
proteus的Python项目详细描述
像访问客户一样访问Tryton模型的库。
用法示例
>>> from proteus import config, Model, Wizard, Report
配置
使用trytond作为模块连接到sqlite内存数据库的配置。
>>> config = config.set_trytond('sqlite:///:memory:')
安装模块
找到模块,调用激活按钮并运行升级向导。
>>> Module = Model.get('ir.module') >>> party_module, = Module.find([('name', '=', 'party')]) >>> party_module.click('activate') >>> Wizard('ir.module.activate_upgrade').execute('upgrade')
创建派对
第一次创建新的派对:
>>> Party = Model.get('party.party') >>> party = Party() >>> party.id < 0 True
填写字段:
>>> party.name = 'ham'
将实例保存到服务器:
>>> party.save() >>> party.name 'ham' >>> party.id > 0 True
设置党的语言
当事人的语言是一个关系域。所以它需要 模型实例作为值。
>>> Lang = Model.get('ir.lang') >>> en, = Lang.find([('code', '=', 'en')]) >>> party.lang = en >>> party.save() >>> party.lang.code 'en'
为当事人创建地址
地址存储在带有one2many字段的party上。所以新地址只是 需要附加到列表地址。
>>> address = party.addresses.new(zip='42') >>> party.save() >>> party.addresses #doctest: +ELLIPSIS [proteus.Model.get('party.address')(...)]
将类别添加到party
类别链接到具有多个字段的party。
因此,首先创建一个类别
>>> Category = Model.get('party.category') >>> category = Category() >>> category.name = 'spam' >>> category.save()
将其附加到参与方的类别中
>>> party.categories.append(category) >>> party.save() >>> party.categories #doctest: +ELLIPSIS [proteus.Model.get('party.category')(...)]
打印参与方标签
在party上有一个标签报告。
>>> label = Report('party.label')
报告是用记录列表和一些额外的数据执行的。
>>> type_, data, print_, name = label.execute([party], {})
地址排序和注册顺序
地址按顺序排列,这意味着它们可以按照 具体顺序。set_sequence方法存储当前顺序。
>>> address = party.addresses.new(zip='69') >>> party.save() >>> address = party.addresses.new(zip='23') >>> party.save()
现在改变顺序。
>>> 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