OpenERP:通过XML-RPC回答模块配置

时间:2012-02-23 18:21:35

标签: python xml-rpc openerp

我可以使用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回复?

2 个答案:

答案 0 :(得分:2)

如果要查看RPC请求和响应的详细内容,可以在调试模式下运行服务器并在dispatch_rpc()中的server/openerp/netsvc.py函数中添加断点,或者可以添加此line to your configuration file:

log_level = debug_rpc_answer

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

值得查看您的日志记录选项。您可以在init_logger()的{​​{1}}函数中查看所有内容。您可以使用netsvc.py选择多个预设选项,也可以使用log_level指定自己的预设选项。

如果您正在编写OpenERP脚本,您可能会发现我们的client helper class很有用。它读取配置文件并负责为您连接和发送消息。

答案 1 :(得分: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)