返回顶部
o

odoo-manager Odoo管理器

Manage Odoo (contacts, any business objects, and metadata) via the official External XML-RPC API. Supports generic CRUD operations on any model using execute_kw, with ready-made flows for res.partner and model introspection. Features dynamic instance and database switching with context-aware URL, database, and credential resolution.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 0.0.1
安全检测
已通过
2,154
下载量
免费
免费
8
收藏
概述
安装方式
版本历史

odoo-manager

Odoo Manager 技能

🔐 URL、数据库与凭证解析

URL 解析

Odoo 服务器 URL 优先级(从高到低):

  1. 1. temporaryurl — 特定操作的一次性 URL
  2. userurl — 当前会话的用户自定义 URL
  3. ODOO_URL — 环境默认 URL

这允许您:

  • - 在多个 Odoo 实例之间切换(生产、预发布、特定客户端)
  • 针对演示数据库进行测试
  • 在不同客户端环境中工作,无需更改全局配置

示例(概念性):

text
// 默认:使用环境中的 ODOO_URL
{{resolved_url}}/xmlrpc/2/common

// 为一次操作覆盖:
temporary_url = https://staging.mycompany.odoo.com
{{resolved_url}}/xmlrpc/2/common

// 为会话覆盖:
user_url = https://client-xyz.odoo.com
{{resolved_url}}/xmlrpc/2/common

数据库解析

数据库名称(db)优先级:

  1. 1. temporarydb
  2. userdb
  3. ODOO_DB

使用此功能:

  • - 在同一 Odoo 服务器上处理多个数据库
  • 在测试数据库和生产数据库之间切换

用户名与密钥解析

用户名优先级:

  1. 1. temporaryusername
  2. userusername
  3. ODOO_USERNAME

密钥(密码或 API 密钥)优先级:

  1. 1. temporaryapikey 或 temporarypassword
  2. userapikey 或 userpassword
  3. ODOOAPIKEY(如果设置)或 ODOO_PASSWORD

重要提示:

  • - Odoo API 密钥替代密码使用,使用常规登录方式。
  • 像存储真实密码一样存储密码/API 密钥;切勿记录或暴露它们。

环境变量通过标准 OpenClaw 元数据处理:requires.env 声明必需变量(ODOOURL、ODOODB、ODOOUSERNAME、ODOOPASSWORD)。ODOOAPIKEY 是一个可选环境变量,存在时替代密码使用;它不在元数据中列出,只需在需要时在环境中设置即可。

解析后的值

在运行时,技能始终使用:

  • - {{resolvedurl}} — 最终 URL
  • {{resolveddb}} — 最终数据库名称
  • {{resolvedusername}} — 最终登录名
  • {{resolvedsecret}} — 实际用于认证的密码 API 密钥

这些值使用上述优先级规则计算得出。



🔄 上下文管理

temporary 和 user 名称是技能逻辑使用的运行时上下文变量,而非 OpenClaw 元数据字段。OpenClaw 没有 optional.context 元数据键;上下文按如下所述在运行时动态解析。

临时上下文(一次性使用)

用户示例:

  • - 对于此请求,使用 Odoo 预发布实例
  • 仅为此操作使用 odoo_demo 数据库
  • 仅为此操作使用此用户连接

行为:

  • - 设置 temporary*(url、db、username、apikey/password)
  • 用于单个逻辑操作
  • 使用后自动清除

适用于:

  • - 比较两个环境之间的数据
  • 在不同数据库上运行单个检查

会话上下文(当前会话)

用户示例:

  • - 在客户端 XYZ 的 Odoo 实例上工作
  • 为此会话使用 clientx_prod 数据库
  • 使用我的管理员账户进行后续操作

行为:

  • - 设置 user(url、db、username、apikey/password)
  • 在整个当前会话中持续存在
  • 仅被 temporary 覆盖或通过清除 user* 覆盖

重置上下文

用户示例:

  • - 恢复为默认 Odoo 配置
  • 清除我的 Odoo 用户上下文

操作:

  • - 清除 userurl、userdb、userusername、userpassword、userapikey
  • 技能回退到环境变量(ODOOURL、ODOODB、ODOOUSERNAME、ODOOPASSWORD / ODOOAPIKEY)

查看当前上下文

用户示例:

  • - 你连接到了哪个 Odoo 实例?
  • 显示当前 Odoo 配置

响应应显示(绝不显示完整密钥):

text
当前 Odoo 上下文:

  • - URL:https://client-xyz.odoo.com (userurl)
  • 数据库:clientxyzprod (userdb)
  • 用户名:apiintegration (userusername)
  • 密钥:使用 API 密钥 (userapikey)
  • 回退 URL:https://default.odoo.com (ODOOURL)
  • 回退数据库:defaultdb (ODOODB)



⚙️ Odoo XML-RPC 基础

Odoo 通过 XML-RPC(而非 REST)暴露其服务器框架的一部分。
外部 API 文档在此:https://www.odoo.com/documentation/18.0/zhCN/developer/reference/externalapi.html

两个主要端点:

  • - {{resolvedurl}}/xmlrpc/2/common — 认证和元数据调用
  • {{resolvedurl}}/xmlrpc/2/object — 通过 execute_kw 调用模型方法

1. 检查服务器版本

调用 common 端点的 version() 以验证 URL 和连接:

python
common = xmlrpc.client.ServerProxy(f{resolved_url}/xmlrpc/2/common)
version_info = common.version()

示例结果:

json
{
server_version: 18.0,
serverversioninfo: [18, 0, 0, final, 0],
server_serie: 18.0,
protocol_version: 1
}

2. 认证

在 common 端点上使用 authenticate(db, username, passwordorapi_key, {}):

python
uid = common.authenticate(resolveddb, resolvedusername, resolved_secret, {})

uid 是一个整数用户 ID,将在所有后续调用中使用。

如果认证失败,uid 为 False / 0 — 技能应:

  • - 告知用户凭据或数据库无效
  • 建议检查 ODOOURL、ODOODB、用户名和密钥

3. 使用 execute_kw 调用模型方法

为 object 端点构建 XML-RPC 客户端:

python
models = xmlrpc.client.ServerProxy(f{resolved_url}/xmlrpc/2/object)

然后使用以下签名的 execute_kw:

python
models.execute_kw(
resolved_db,
uid,
resolved_secret,
model.name, # 例如 res.partner
methodname, # 例如 searchread
[positional_args],
{keyword_args}
)

本技能中的所有 ORM 操作均以 execute_kw 表示。



🔍 域与数据类型(Odoo ORM)

域过滤器

域是条件列表:

python
domain = [[field_name, operator, value], ...]

示例:

  • - 所有公司:[[iscompany, =, True]]
  • 法国的合作伙伴:[[countryid, =, france_id]]
  • 概率 > 50% 的线索:[[probability, >, 50]]

常用运算符:

  • - =、!=、>、>=、<、<=
  • like、ilike(不区分大小写)
  • in、not in
  • child_of(层级关系)

字段值约定

  • - 整数 / 浮点数 / 字符 / 文本:使用原生类型。
  • 日期 / 日期时间:YYYY-MM-DD 或 ISO 8601 格式的字符串。
  • 多对一:写入时通常发送记录 ID(int);读取时通常返回 [id, display_name]。
  • 一对多 / 多对多:写入时使用 Odoo 命令列表协议(此处不详述;如有需要请参阅 Odoo 文档)。

🧩 通用 ORM 操作(execute_kw)

以下每个小节显示典型的用户查询和相应的 execute_kw 用法。它们适用于任何模型(不仅仅是 res.partner)。

列出/搜索记录(search)

用户查询:

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 odoo-manager-1776362841 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 odoo-manager-1776362841 技能

通过命令行安装

skillhub install odoo-manager-1776362841

下载

⬇ 下载 odoo-manager v0.0.1(免费)

文件大小: 10.22 KB | 发布时间: 2026-4-17 15:29

v0.0.1 最新 2026-4-17 15:29
Initial release: Manage Odoo via XML-RPC with dynamic environment and context switching.

- Supports generic CRUD operations on any Odoo model using execute_kw.
- Features ready-made flows for res.partner and model introspection.
- Allows dynamic, context-aware switching of Odoo instance, database, and credentials (temporary and session scopes).
- Computes and displays resolved connection context; sensitive secrets are never exposed in outputs.
- Requires ODOO_URL, ODOO_DB, ODOO_USERNAME, and ODOO_PASSWORD environment variables.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部