当前位置 : 主页 > 大数据 > 区块链 >

(原创) odoo无界面更新模块

来源:互联网 收集:自由互联 发布时间:2021-06-22
开发odoo模块时,懒得通过ui进行模块升级,由于开发过程中更新模块可能比较频繁,干脆利用odoo的xmlrpc功能直接进行模块更新. xmlrpclib(python2下使用) 包下载 代码如下: # !/usr/bin/env pyth

开发odoo模块时,懒得通过ui进行模块升级,由于开发过程中更新模块可能比较频繁,干脆利用odoo的xmlrpc功能直接进行模块更新.

xmlrpclib(python2下使用) 包下载

代码如下:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import xmlrpclib

db_name="demo"                    #要访问的数据库名称   自行修改
db_pwd="user"                     #密码               自行修改
db_user="111"                     #用户名              自行修改
url="http://localhost"            #odoo服务器地址       自行修改
wait_for_upgrade=[stock,sale] #待更新的模块列表      自行修改

try:
    server=xmlrpclib.ServerProxy({}/xmlrpc/2/common.format(url))
except Exception as e:
   print("连接服务器失败..")
   print(e)
   exit()

uid = server.authenticate(db_name, db_user, db_pwd, {})
module_domain=[[(name,in,wait_for_upgrade)]]
if uid:
    models = xmlrpclib.ServerProxy({}/xmlrpc/2/object.format(url))
    module_ids=models.execute_kw(db_name, uid, db_pwd,
    ir.module.module, search,
    module_domain, {})
    
    if not module_ids:
    print("没有模块需要升级")
        exit()
    upgrade_module_list=models.execute_kw(db_name, uid, db_pwd,ir.module.module,read,[module_ids],{fields:[id,name]})
    print(upgrade_module_list)
    
    for module_info in upgrade_module_list:
        module_name=module_info[name]
        module_id=module_info[id]
        print("开始升级模块:%s...."%module_info[name])
        try:        
        result=models.execute_kw(db_name, uid, db_pwd,ir.module.module,button_immediate_upgrade,[[module_id]],{})
             if result.get(url) and result.get(type) and result.get(target):
                print("模块 %s 升级成功!" %module_name)
        else:
                print("模块 %s 升级失败!"% module_name)
        except Exception as e:
            print("模块 %s 升级中发生了错误!" %module_name)
        print(e)
else:
   print("无效的用户名或者密码!")
上一篇:常用不等式例题整理
下一篇:proto2java
网友评论