OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
2015-05-25 01:23
337 查看
OpenERP 的XML-RPC的轻度体验+many2many,one2many,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,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, uid, USERPASS, ´res.partner´,´create´,value) print ids |
因为partner 和address的关系是one2many,在OpenERP的ORM里面可以直接添加,修改这些one2many,many2many和many2one的值有一个特殊的格式。
many2many
(0,0,{values}) 根据values里面的信息新建一个记录。
(1,ID,{values})更新id=ID的记录(写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
(3,ID) 切断主从数据的链接关系但是不删除这个数据
(4,ID) 为id=ID的数据添加主从链接关系。
(5) 删除所有的从数据的链接关系就是向所有的从数据调用(3,ID)
(6,0,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))
例子[(6, 0, [8, 5, 6, 4])] 设置 many2many to ids [8, 5, 6, 4]
one2many
(0, 0,{ values })根据values里面的信息新建一个记录。
(1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据)
(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)
例子:
[(0,0,{'field_name':field_value_record1,...}),(0,0,{'field_name':field_value_record})]
many2one的字段比较简单,直接填入已经存在的数据的id或者填入False删除原来的记录。
Comment for OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
Hifly
2 yearss ago
这么好的文档,今天才看到! 感谢Joshua !
(Reply)
Leave a Reply
Recent Posts
[HowTo]如何在销售订单行按业务伙伴配发产品?Odoo 库存管理-创建链式库存移动的拉式(需求)和推式规则
Odoo 库存管理-库存移动(Stock Move)新玩法
stock_fill_inventory_filter模块发布
OpenERPV7登陆界面翻译问题
Categories
二次开发公司新闻
博客
实施技巧
成功案例
拥抱开源
文档翻译
服务
模块分析
源码分析
网络文摘
项目日记
Tags
6.17.0CRMerpmagnetomany2onemultiaddons pathondeleteopenerpopenerp7openerp
magento连接器演示OpenERPV7OpenERPV7.0OpenERP二次开发openerp介绍OpenERP图表视图OpenERP安装方法OpenERP实施OpenERP开发OpenERP认证PDFPostgreSQLPyconChinapython
openerp many2many one2many many2onereportv6.1v7xml中文二次开发信息化学习方法安装教程实施开源开源ERP报表教程新功能新特性硬件管理软件翻译视图连接器
相关文章推荐
- OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
- OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
- OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
- OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
- Hibernate中,One2Many和Many2One的双向映射关系的XML实现方式
- [代码]DOM和LINQ to XML创建XML树的三种方式
- Android 创建与解析XML(二)—— Dom方式
- 以支持多种浏览器的方式创建 XMLHttpRequest 对象
- 07.Java读取、创建xml(通过dom方式)
- DOM4J方式创建解析XML
- Android 创建与解析XML(四)—— Pull方式
- (转)Android 创建与解析XML—— Dom4j方式 .
- Android 创建与解析XML(四)—— Pull方式
- Java读取、创建xml(通过dom方式)
- C# 用Linq的方式实现对Xml文件的基本操作(创建xml文件、增删改查xml文件节点信息)
- 以支持多种浏览器的方式创建 XMLHttpRequest 对象
- Android 创建与解析XML(三)—— Sax方式
- Android创建与解析XML(三)――详解Sax方式
- JAVA创建XML文件(三)---DOM4J方式创建XML
- Java读取、创建xml(通过dom方式)