(07)odoo扩展API
* 打开XML-RPC 连接
>>> import xmlrpclib
>>> srv, db = 'http://localhost:8069', 'v8dev'
>>> user, pwd = 'admin', 'admin'
>>> common = xmlrpclib.ServerProxy('%s/xmlrpc/2/common' % srv)
>>> common.version()
{'server_version_info': [8, 0, 0, 'final', 0], 'server_serie':
'8.0', 'server_version': '8.0', 'protocol_version': 1}
依赖 xmlrpclib
#验证
>>> uid = common.authenticate(db, user, pwd, {})
>>> print uid
#取数据
>>> api = xmlrpclib.ServerProxy('%s/xmlrpc/2/object' % srv)
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'search_count', [[]])
得到记录集的总数
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'search',
[[('country_id', '=', 'be'), ('parent_id', '!=', False)]])
[43, 42]
得到记录集的id序列
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'read', [[43]],
{'fields': ['id', 'name', 'parent_id']})
[{'parent_id': [7, 'Agrolait'], 'id': 43, 'name': 'Michel
Fletcher'}]
得到记录
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'search_read',
[[('country_id', '=', 'be'), ('parent_id', '!=', False)]],
{'fields': ['id', 'name', 'parent_id']})
#其它方法
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'create', [{'name':
'Packt'}])
75
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'write', [[75],
{'name': 'Packt Pub'}])
True
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'read', [[75], ['id',
'name']])
[{'id': 75, 'name': 'Packt Pub'}]
>>> api.execute_kw(db, uid, pwd, 'res.partner', 'unlink', [[75]])
True
* 做一个桌面应用 用到接口
note_api.py
----------------
import xmlrpclib
class NoteAPI():
def __init__(self, srv, db, user, pwd):
common = xmlrpclib.ServerProxy( '%s/xmlrpc/2/common' % srv)
self.api = xmlrpclib.ServerProxy('%s/xmlrpc/2/object' % srv)
self.uid = common.authenticate(db, user, pwd, {})
self.pwd = pwd
self.db = db
self.model = 'todo.task'
def execute(self, method, arg_list, kwarg_dict=None):
return self.api.execute_kw(
self.db, self.uid, self.pwd, self.model,
method, arg_list, kwarg_dict or {})
def get(self, ids=None):
domain = [('id',' in', ids)] if ids else []
fields = ['id', 'name']
return self.execute('search_read', [domain, fields])
def set(self, text, id=None):
if id:
self.execute('write', [[id], {'name': text}])
else:
vals = {'name': text, 'user_id': self.uid}
id = self.execute('create', [vals])
return id
if __name__ == '__main__':
srv, db = 'http://localhost:8069', 'v8dev'
user, pwd = 'admin', 'admin'
api = NoteAPI(srv, db, user, pwd)
from pprint import pprint
pprint(api.get())
----------------
note_gui.py
----------------
from Tkinter import Text, Tk
import tkMessageBox
from note_api import NoteAPI
class NoteText(Text):
def __init__(self, api, text='', id=None):
self.master = Tk()
self.id = id
self.api = api
Text.__init__(self, self.master, bg='#f9f3a9',
wrap='word', undo=True)
self.bind('<Control-n>', self.create)
self.bind('<Control-s>', self.save)
if id:
self.master.title('#%d' % id)
self.delete('1.0', 'end')
self.insert('1.0', text)
self.master.geometry('220x235')
self.pack(fill='both', expand=1)
def create(self, event=None):
NoteText(self.api, '')
def save(self, event=None):
text = self.get('1.0', 'end')
self.id = self.api.set(text, self.id)
tkMessageBox.showinfo('Info', 'Note %d Saved.' % self.id)
if __name__ == '__main__':
srv, db = 'http://localhost:8069', 'v8dev'
user, pwd = 'admin', 'admin'
api = NoteAPI(srv, db, user, pwd)
for note in api.get():
x = NoteText(api, note['name'], note['id'])
x.master.mainloop()
----------------
* ERPpeek
首先要安装 erppeek
$ pip install -U erppeek
#API 用法:
>>> import erppeek
>>> api = erppeek.Client('http://localhost:8069', 'v8dev',
'admin', 'admin')
>>> api.common.version()
>>> api.count('res.partner', [])
>>> api.search('res.partner', [('country_id', '=', 'be'),
('parent_id', '!=', False)])
>>> api.read('res.partner', [43], ['id', 'name', 'parent_id'])
>>> m = api.model('res.partner')
>>> m = api.ResPartner
>>> m.count([('name', 'like', 'Packt%')]) 返回是数量
>>> m.search([('name', 'like', 'Packt%')]) 返回是id
>>> recs = m.browse([('name', 'like', 'Packt%')]) 返回是记录对象
# CLI用法
$ erppeek --help 可以看到详细的信息
* 到这里插件开发就讲完了
(07)odoo扩展API的更多相关文章
- Odoo : ORM API
记录集 model的数据是通过数据集合的形式来使用的,定义在model里的函数执行时它们的self变量也是一个数据集合 class AModel(models.Model): _name = 'a.m ...
- win10桌面和手机的扩展API,判断是否有实体后退键API
喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...
- Win(Phone)10开发第(1)弹,桌面和手机的扩展API,还我后退键
喜大普奔的win10 uap开发预览版终于出了,这次更新跟8.1的变化不是很大,但是将原本win8.1和wp8.1uap的分项目的形式,改为了整合成一个项目,经过一次编译打包成一个appx包,实现了无 ...
- 【转】odoo 新API装饰器中one、model、multi的区别
http://blog.csdn.net/qq_18863573/article/details/51114893 1.one装饰器详解 odoo新API中定义方式: date=fields.Date ...
- Java基础篇(02):特殊的String类,和相关扩展API
本文源码:GitHub·点这里 || GitEE·点这里 一.String类简介 1.基础简介 字符串是一个特殊的数据类型,属于引用类型.String类在Java中使用关键字final修饰,所以这个类 ...
- 谷歌拼音输入法扩展API开发指南
为了帮助开发者在谷歌拼音输入法的基本输入功能基础上,开发和定义更丰富的扩展输入功能,谷歌拼音输入法提供了以Lua脚本编程语言为基础的输入法扩展API.利用输入法扩展API,开发者可以编写自定义的输入功 ...
- Odoo的@api.装饰器
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281437.html Odoo自带的api装饰器主要有:model,multi,one,constrains, ...
- odoo里API解读
Odoo自带的api装饰器主要有:model,multi,one,constrains,depends,onchange,returns 七个装饰器. multimulti则指self是多个记录的合集 ...
- Python使用Odoo外部api
Odoo服务器提供一个外部API,该API由其web客户端使用,也可以被支持XML-RPC或 JSON-RPC协议的编程语言(例如:Python.PHP.Ruby和Java)使用. 使用XML-RPC ...
随机推荐
- Maven初学
先上几张霸气的图:
- JS实现 键盘操作
JS实现 键盘操作: 详情可以去其逛网查看其API并下载,地址:http://craig.is/killing/mice <!DOCTYPE html PUBLIC "-//W3C// ...
- 【CC评网】2013.第41周 不求排版,简单就好
书单 碰上国庆,加上这周,消化掉几本书: <软件随想录>:Joel的随想录,也就是他Blog上的文章的摘选:整本书看下来轻松:写了篇读书笔记[传送门]: <中国在梁庄>:这本书 ...
- clang: error: linker command failed with exit code 1 (use -v to see invocation)
报错提示: ... ld: 6 duplicate symbols for architecture x86_64 clang: error: linker command failed with e ...
- hdu 5154 Harry and Magical Computer 拓扑排序
Harry and Magical Computer Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- h5上滑刷新(分页)
$('.dom').append('<div class="loadingwrap" id="loading" style="display:n ...
- 函数对象适配器之ptr_fun的使用示例
//============================================================================ // Name : CopyInts4.c ...
- MongoDB资料汇总
MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: 面向集合存 ...
- Oracle VM VirtualBox 虚拟机与主机共享文件
安装增强功能(参考文档) VirtualBox自带了一个增强工具Sun VirtualBox Guest Additions,这是实现虚拟机与真实主机共享的关键.启动虚拟机后,点击控制菜单“设备”→“ ...
- php xml 操作。
参考 文章:http://www.cnblogs.com/zcy_soft/archive/2011/01/26/1945482.html DOMDocument相关的内容. 属性: Attribut ...