我的账户
赛维资讯网

自媒体资讯干货

亲爱的游客,欢迎!

已有账号,请

立即登录

如尚未注册?

加入我们
  • 客服电话
    点击联系客服

    在线时间:8:00-16:00

    客服电话

    400-000-0000

    电子邮件

    xjubao@163.com
  • APP下载

    赛维资讯网APP

    随时随地掌握行业动态

  • 官方微信

    扫描二维码

    关注赛维资讯网公众号

赛维资讯网 网站首页 资讯列表 资讯内容

ODOO扩展API

2021-04-07 发布于 赛维资讯网

* 打开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('', self.create)
self.bind('', 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%')]) 返回是记录对象

openerp.hk openerp.hk
1

鲜花
1

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

相关阅读

  • 赛维资讯网
    1970-01-01
  • 赛维资讯网
    1970-01-01
  • 赛维资讯网
    1970-01-01
  • 赛维资讯网
    1970-01-01
  • 赛维资讯网
    1970-01-01
  • 赛维资讯网
    1970-01-01
赛维资讯网

扫一扫二维码关注我们Get最新资讯

相关分类
热点推荐
关注我们
赛维资讯网与您同行

客服电话:400-000-0000

客服邮箱:xjubao@163.com

周一至周五 9:00-18:00

赛维资讯网 版权所有

Powered by 赛维资讯网 X1.0@ 2015-2020