|
- from xmlrpc import client
-
-
- # 存储了所有创建执行模型调用的对象的所有信息:API引用、uid、密码、数据库名和要使用的模型
-
- class LibraryAPI():
- def __init__(self, srv, port, db, user, pwd):
- common = client.ServerProxy(
- 'http://%s:%d/xmlrpc/2/common' % (srv, port))
- self.api = client.ServerProxy(
- 'http://%s:%d/xmlrpc/2/object' % (srv, port))
- self.uid = common.authenticate(db, user, pwd, {})
- self.pwd = pwd
- self.db = db
- self.model = 'library.book'
-
- # 定义一个帮助方法来执行调用。有赖于前面对象存储的数据
- 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 {})
-
- # search_read()方法接收一个可选的ID列表来获取数据
- def search_read(self, text=None):
- domain = [('name', 'ilike', text)] if text else []
- fields = ['id', 'name']
- return self.execute('search_read', [domain, fields])
-
- # create()方法用于创建给定书名的新书并返回所创建记录的 ID
- def create(self, title):
- vals = {'name': title}
- return self.execute('create', [vals])
-
- # write()方法中传入新书名和图书 ID 作为参数,并对该书执行写操作
- def write(self, title, id):
- vals = {'name': title}
- return self.execute('write', [[id], vals])
-
- # 实现unlink()方法
- def unlink(self, id):
- return self.execute('unlink', [[id]])
-
-
- # 测试代码在运行时执行
- if __name__ == '__main__':
- # 测试配置
- srv, db, port = 'localhost', 'dev13', 8069
- user, pwd = 'admin', '1'
- api = LibraryAPI(srv, port, db, user, pwd)
- from pprint import pprint
-
- pprint(api.search_read())
|