跳转到主要内容

作为客户端访问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')(...)]

排序地址和注册顺序

地址按顺序排序,这意味着它们可以按特定顺序存储。 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'

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

proteus-7.2.0.tar.gz (42.1 kB 查看哈希值)

上传时间 源码

构建分发版

proteus-7.2.0-py3-none-any.whl (40.4 kB 查看哈希值)

上传时间 Python 3

支持