2

我可以使用 Python 脚本中的 XML-RPC在OpenERP v6.1中轻松安装新模块:

response = sock.execute(db, uid, pwd, 'ir.module.module', 'button_immediate_install', module_ids)

有时响应只是False(例如edi模块),有时它只是刷新Web客户端(例如product模块)的指示。这很简单,我无事可做。

但有时新安装的模块会要求客户端进行一些配置(例如,sales模块或其依赖项之一要求选择要导入的会计科目表模板)。当发生这种情况时,响应是一个大字典,我可以猜测它询问我的值以及这些值的多种选择,但是我如何通过 XML-RPC 做出响应呢?

4

2 回答 2

2

如果要查看 RPC 请求和响应的详细内容,可以在调试模式下运行服务器并在dispatch_rpc()函数中放置断点server/openerp/netsvc.py,也可以将这一行添加到配置文件中:

log_level = debug_rpc_answer

设置完成后,您可以使用客户端安装模块并查看它发送的值。

值得查看您的日志记录选项。init_logger()您可以在 中的函数中看到它们netsvc.py。您可以使用 选择多个预设选项,也可以使用log_level指定您自己的选项log_handler

如果您正在编写 OpenERP 脚本,您可能会发现我们的客户端助手类很有用。它读取配置文件并为您处理连接和发送消息。

于 2012-02-28T19:31:37.690 回答
2

万一其他人发现了这一点,我花了很长时间才弄清楚如何通过 XML-RPC 成功安装模块。

这是我最终得到的结果:

# A list of module ids to install:
module_ids = (
    59, #account_accountant
    104, # account_asset
    7, # account_voucher
    47, # crm
    23, # crm_todo
    119, # hr
    115, # hr_timesheet_sheet
    14, # knowledge
    191, # purchase
    175, # stock
)

#send request to server
response = sock.execute(dbname, uid, pwd, 'ir.module.module', 'button_immediate_install', module_ids)
于 2012-07-03T02:55:44.220 回答