作为客户端访问Tryton服务器的库
项目描述
一个像客户端一样访问Tryton模型的库。
使用示例
>>> from proteus import config, Model, Wizard, Report
配置
配置以使用 trytond 作为模块连接到 sqlite 内存数据库。
>>> config = config.set_trytond('sqlite:///:memory:')
还有 config.set_xmlrpc 方法,可以用于通过 URL 连接,以及当作为上下文管理器使用时连接会话的 config.set_xmlrpc_session 方法。
激活模块
找到模块,点击激活按钮并运行升级向导。
>>> 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
设置团体的语言
团体上的语言是一个 Many2One 关联字段。因此,需要获取一个 Model 实例作为值。
>>> Lang = Model.get('ir.lang') >>> en, = Lang.find([('code', '=', 'en')]) >>> party.lang = en >>> party.save() >>> party.lang.code 'en'
为团体创建地址
地址存储在团体中,使用 One2Many 字段。因此,新的地址只需要添加到 addresses 列表中。
>>> address = party.addresses.new(postal_code='42') >>> party.save() >>> party.addresses #doctest: +ELLIPSIS [proteus.Model.get('party.address')(...)]
为团体添加分类
分类通过 Many2Many 字段与团体链接。
因此,首先创建一个分类
>>> 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(postal_code='69') >>> party.save() >>> address = party.addresses.new(postal_code='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
设置上下文
使法语可翻译
>>> Language = Model.get('ir.lang') >>> french, = Language.find([('code', '=', 'fr')]) >>> french.translatable = True >>> french.save()
用英语创建一个分类
>>> Category = Model.get('party.category') >>> with config.set_context(language='en'): ... category = Category(name="Category") ... category.save()
翻译成法语
>>> with config.set_context(language='fr'): ... category_fr = Category(category.id) ... category_fr.name = "Categorie" ... category_fr.save()
用英语读取
>>> category.reload() >>> category.name 'Category'
用法语读取
>>> category_fr.reload() >>> category_fr.name 'Categorie'
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分布
proteus-7.2.0.tar.gz (42.1 kB 查看哈希值)
构建分发版
proteus-7.2.0-py3-none-any.whl (40.4 kB 查看哈希值)
关闭
proteus-7.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a6ad378a4737bf71a15a82e723adfddfa53db2fc30989222e4f1b21e87eb2482 |
|
MD5 | 6b2a26191284e4f5576c39e35b211242 |
|
BLAKE2b-256 | 897c1d2899c0207d5d624a0d1996bea5b53934a2ae1fe29f9a8d181086ddf438 |
关闭
proteus-7.2.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e87ea99e779ca71afed3970132d8bc34c799b451a0f9b487172ed5c98e8f9cff |
|
MD5 | 8f42b86a4521895b362b0d781c8518f7 |
|
BLAKE2b-256 | 955c7bfe67de7c3c3b56e9cec1c15b94e470d2b3bbb23440a5518c66288bc02f |