Odoo:如何通过XML-RPC API查找Odoo版本?

Odoo: How to find Odoo version through XML-RPC API?

我正在编写一个 PHP 库来访问 Odoo XML-RPC API 我需要知道我正在与之交谈的服务器的 Odoo 版本 - 但是我不知道如何确定版本。是否有某个模型可以告诉我或我该怎么做?

更新

我以为我已经弄明白了。 ir.module.module 模型将为您提供所有已安装模块的列表。然后在 base 模块中查看 installed_version 属性。 但是 这需要管理员权限!我需要以通常使用 API.

的普通用户身份执行此操作

但是对于任何拥有这种访问权限的人来说,这就是您要做的。使用 ripcord(参见示例 ),您将使用此行仅检索 base 模块:

$models->execute_kw($db, $username, $password, 'ir.module.module', 'search_read', array(array(array('name', '=', 'base'))) );

即使没有来自 API 公共端点的身份验证,您也可以获得 Odoo 版本。请参阅 https://www.odoo.com/documentation/12.0/webservices/odoo.html 标题为“登录”的文档和那里的第一个代码示例。您可以在那里找到 server_version 属性。

$common = ripcord::client($url.'/xmlrpc/2/common');
$common->version();

以下代码有效并且在多台服务器上测试工作正常。

$url = 'https://###.###.###.##:8069'; 
$db = 'demo'; 
$username = 'user_name'; 
$password = 'password';
$common = ripcord::client("$url/xmlrpc/2/common"); 
$models = ripcord::client("$url/xmlrpc/2/object"); 
$common->version(); 
$uid = $common->authenticate($db, $username, $password, array());

These examples use the Ripcord library, which provides a simple XML-RPC API. Ripcord requires that XML-RPC support be enabled in your PHP installation.

Since calls are performed over HTTPS, it also requires that the OpenSSL extension be enabled.