rpc的odoo库

odoo-rpc-client的Python项目详细描述


https://gitlab.com/katyukha/odoo-rpc-client/badges/master/pipeline.svghttps://gitlab.com/katyukha/odoo-rpc-client/badges/master/coverage.svghttps://img.shields.io/readthedocs/odoo-rpc-client.svg

Canonical source

odoo rpc client的规范源位于GitLab

Overview

这是OpenERP Proxy的核心部分

这个项目只是rpc client用于odoo。 此项目提供类似于 odoo对odoo对象隐藏执行操作的内部代码 xml-rpcjson-rpc在后面。

Features

  • python 3.3+支持
  • 您可以对任何openerp odoo对象调用任何公共方法,包括: readsearchwriteunlink和其他
  • 有很多速度优化(缓存,只读请求字段, 通过一次rpc调用等读取当前集合(缓存)中所有记录的数据
  • 打算将ipython autocomplete的更多好处视为可能的
  • 提供类似于browse_record的界面,允许浏览相关的 模特也是。支持浏览方法。 还添加了方法搜索记录以简化 搜索和读取操作。
  • 扩展支持。您可以轻松地修改这个库的大多数组件 创建自己的扩展和插件。这真的很简单。参见中的示例 openerp_proxy/ext/目录。
  • 插件支持。插件和扩展是一样的,但目的是实现额外的逻辑。 例如看odoo_rpc_client/plugins 以及odoo_rpc_client/plugin.py
  • 支持json-rpc用于8+版本的odoo
  • 支持在rpc方法调用(服务器版本6.1及更高版本)中使用命名参数
  • 实验性AnyField
  • 集成
  • 错过的功能?在GitHubGitLab上填写并发布

Quick example

fromodoo_rpc_clientimportClient# assume that odoo server is listening localhost on standard 8069 port and# have database 'my_db'.client=Client('localhost','my_db','user','password')# get current userclient.userprint(client.user.name)# simple rpc callsclient.execute('res.partner','read',[user.partner_id.id])# Model browsingSaleOrder=client['sale.order']s_orders=SaleOrder.search_records([])fororderins_orders:print(order.name)forlineinorder.order_line:print("\t%s"%line.name)print("-"*5)print()

Supported Odoo server versions

测试对象: -odoo版本:7.08.09.010.011.012.0 -python版本:2.73.33.43.53.63.7

Install

此项目位于PyPI 所以它可以通过pip安装:

pip install odoo_rpc_client

Usage

Connect to server / database

使用as lib和使用as shell之间的一个区别是 已创建到数据库的连接。当用作外壳时 是会话,它提供了一些交互性。但当用作库时 在大多数情况下不需要这种交互,所以连接 应该手动创建,提供来自其他一些源的连接数据 比如配置文件之类的。

下面是一种创建连接的方法

fromodoo_rpc_clientimportClientdb=Client(host='my_host.int',dbname='my_db',user='my_db_user',pwd='my_password here')

接下来,shell和lib的用法没有什么不同。

General usage

例如,让我们试着找出有多少销售订单处于“完成”状态 我们的数据库。(请参阅以上各节以获取有关如何连接到ODOO数据库的帮助)

>>>sale_order_obj=db['sale.order']# or You may use 'db.get_obj('sale.order')' if You like>>>>>># Now lets search for sale orders:>>>sale_order_obj.search([('state','=','done')],count=True)5

所以我们有5个订单处于完成状态。所以让我们读一下。

从odoo读取数据的默认方法是搜索所需的记录 使用search方法返回记录的id列表,然后读取 使用read方法的数据。两种方法基本相同 一个:

>>>sale_order_ids=sale_order_obj.search([('state','=','done')])>>>sale_order_datas=sale_order_obj.read(sale_order_ids,['name'])# Last argument is optional.# it describes list of fields to read# if it is not provided then all fields# will be read>>>sale_order_datas[0]{'id':3,'name':'SO0004'}

正如我们所看到的那样,以这种方式读取数据可以让我们得到字典列表 其中每个包含字段都已读取

另一种读取数据的方法是使用 搜索记录 或 阅读单词 方法。每种方法都接收与searchread方法。但是传递count参数 search\_records将导致错误。这些方法的主要区别 在使用记录类时 不是dict而是读取了每个记录。记录类为记录提供了一些类似orm的能力, 例如,允许将访问字段作为属性并提供机制 懒散地获取相关字段。

>>>sale_orders=sale_order_obj.search_records([('state','=','done')])>>>sale_orders[0]R(sale.order,9)[SO0011]>>>>>># So we have list of Record objects. Let's check what they are>>>so=sale_orders[0]>>>so.id9>>>so.nameSO0011>>>so.partner_idR(res.partner,9)[BetterCorp]>>>>>>so.partner_id.nameBetterCorp>>>so.partner_id.activeTrue

Additional features

插件

在0.4版中,插件系统被完全重构。在这个版本 我们开始使用extend_me 库来轻松构建扩展和插件。

插件是提供应该可用的功能的常用类。 在db.plugins.*点,实现与核心系统无关的逻辑。


有关详细信息,请参见source codedocumentation

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如果我想根据不同的属性以不同的方式搜索对象,我应该使用什么样的数据结构?   从spring控制器到不同URL的java Post   上的java错误。设置值和。addValueListener   多线程是Java SwingWorker协作的吗?   Responsebuilder实体的日期属性的java值在json中设置为null   密码加密Joomla 3.3在java中加密,获取salt值   java PyCharm无法保存设置无法保存设置。请重新启动PyCharm社区版   java如何将SWT文本字段限制为一定数量的字符?   java如果您想让列表包含单个父类的各种子类,您会如何做?   有片段的java活动(bug)与没有片段的java活动(ok)   java Elasticache Memcached中密钥的最大长度是多少?   Lambda表达式和非类Java方法   路径isAbsolute方法如何运行[Java]?   java如何将方法名设置为新类中的参数?   swing Java方法应该检查图形是否不工作   java Gradle访问项目外部的文件   java无法捕获从该服务器引发的异常   java从insert中的select返回值   java如何处理海量web抓取请求