目录
Odoo通常通过模块进行内部扩展,但是它的许多特性和所有数据也可以从外部获得,用于外部分析或与各种工具集成。Models API的一部分很容易通过XML-RPC获得,并且可以从多种语言访问。
1、连接
1.1 配置
如果您已经安装了Odoo服务器,那么您可以使用它的参数:
url = <insert server URL>
db = <insert database name>
username = 'admin'
password = <insert password for your admin user (default: admin)>
注:对于Odoo Online实例(<domain>.Odoo.com),用户是在没有本地密码的情况下创建的(作为用户,您是通过Odoo Online身份验证系统登录的,而不是通过实例本身登录的)。要在Odoo联机实例上使用XML-RPC,需要在要使用的用户帐户上设置密码
连接示例:
import xmlrpc.client
info = xmlrpc.client.ServerProxy('https://demo.odoo.com/start').start()
url, db, username, password = \
info['host'], info['database'], info['user'], info['password']
1.2 登录
Odoo要求API的用户在查询大多数数据之前进行身份验证。
xmlrpc/2/common端点提供不需要身份验证的元调用,例如身份验证本身或获取版本信息。要在尝试进行身份验证之前验证连接信息是否正确,最简单的调用是询问服务器的版本。
common = xmlrpc.client.ServerProxy('{}/xmlrpc/2/common'.format(url))
common.version()
{
"server_version": "8.0",
"server_version_info": [8, 0, 0, "final", 0],
"server_serie": "8.0",
"protocol_version": 1,
}
身份验证本身是通过authenticate函数完成的,并返回一个用户标识符(uid),用于已验证的调用而不是登录。
uid = common.authenticate(db, username, password, {})
2、调用方法
调用方法第二个端点是xmlrpc/2/object,用于通过execute-kw RPC函数调用odoo模型的方法。需要以下参数:
要使用的数据库,字符串
用户id(通过身份验证检索),一个整数
用户的密码,字符串
模型名,字符串
方法名,字符串
按位置传递的参数数组/列表
要通过关键字传递的参数的映射/dict(可选)
models = xmlrpc.client.ServerProxy('{}/xmlrpc/2/object'.format(url))
models.execute_kw(db, uid, password,
'res.partner', 'check_access_rights'