加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建

发布时间:2020-12-16 06:19:30 所属栏目:百科 来源:网络整理
导读:OpenERP 的XML-RPC的轻度体验+many2many,many2one创建方式 每当夏秋之交,我们都有展会,展会完后,都有很多的新的潜在客户要添加,我们收了一大堆名片,想入openERP还是需要一定时间的,而且名片的图片导入没有什么简洁的方法,所以我就想写个script来进行

OpenERP 的XML-RPC的轻度体验+many2many,many2one创建方式


每当夏秋之交,我们都有展会,展会完后,都有很多的新的潜在客户要添加,我们收了一大堆名片,想入openERP还是需要一定时间的,而且名片的图片导入没有什么简洁的方法,所以我就想写个script来进行导入这些名片以及相关的客户信息。

XML-RPC是一个远程过程调用(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。

需求是这样的,想通过一个script来将一个excel表格的partner连同他们的联系人一起导入

# -*- encoding: utf-8 -*-

import xmlrpclib
import xlrd
import base64

DB = ′TESTDB′#帐套名
USERNAME = ′admin′#用户名
USERPASS = ′1′#密码

IMAGELOCATION=′E:IMG′ #图片的根目录地址
#读取excel文件
fname = "E:TEST.xls" #excel表格地址
bk = xlrd.open_workbook(fname)
#按名字取sheet
sh = bk.sheet_by_name("JOSHUA")
#登陆取uid
sock_common = xmlrpclib.ServerProxy (′http://localhost:8069/xmlrpc/common′)
uid = sock_common.login(DB,USERNAME,USERPASS)
sock = xmlrpclib.ServerProxy(′http://%s:%s/xmlrpc/object′ % (′localhost′,8069))

for i in range(1,sh.nrows):
row_data = sh.row_values(i)
#通过国家名找到国家的id
country_id = sock.execute(DB,uid,USERPASS,′res.country′,′search′,[(′name′,′=′,row_data[8])])
value = {
′name′:row_data[0],#第一格是partner名字,下如此类推
′lang′:row_data[1],
′address′:[(0,{′title′:row_data[2],
′name′:row_data[3],
′email′:row_data[4],
′phone′:row_data[5],
′mobile′:row_data[6],
′street′:row_data[7],
′country_id′:country_id[0],
′city′:row_data[9],
′zip′:row_data[10],
})],

}
if row_data[11]:
#在openerp里面图片是以二进制来存档,所以要用base64转换,row_data[11]是图片的文件名。
value[′logo′]=base64.encodestring(open(IMAGELOCATION+row_data[11],′rb′).read())
print value
ids = sock.execute(DB,′res.partner′,′create′,value)
print ids





sock.execute(DB,value)

这句是向res.partner执行create的方法,value就是对应的参数

因为partner 和address的关系是one2many,在OpenERP的ORM里面可以直接添加,修改这些one2many,many2many和many2one的值有一个特殊的格式。

many2many

(0,{values}) 根据values里面的信息新建一个记录。

(1,ID,{values})更新id=ID的记录(写入values里面的数据)

(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

(3,ID) 切断主从数据的链接关系但是不删除这个数据

(4,ID) 为id=ID的数据添加主从链接关系。

(5) 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID)

(6,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))

例子[(6,[8,5,6,4])] 设置 many2many to ids [8,4]

one2many

(0,{ values })根据values里面的信息新建一个记录。

(1,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)

(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

例子:

[(0,{'field_name':field_value_record1,...}),(0,{'field_name':field_value_record})]

many2one的字段比较简单,直接填入已经存在的数据的id或者填入False删除原来的记录。








Comment for OpenERP 的XML-RPC的轻度体验+many2many,many2one创建方式



Hifly
2 yearss ago


这么好的文档,今天才看到! 感谢Joshua !





Leave a Reply

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读