odoo_dev 开发培训作业:图书管理系统
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.8KB

  1. from xmlrpc import client
  2. # 存储了所有创建执行模型调用的对象的所有信息:API引用、uid、密码、数据库名和要使用的模型
  3. class LibraryAPI():
  4. def __init__(self, srv, port, db, user, pwd):
  5. common = client.ServerProxy(
  6. 'http://%s:%d/xmlrpc/2/common' % (srv, port))
  7. self.api = client.ServerProxy(
  8. 'http://%s:%d/xmlrpc/2/object' % (srv, port))
  9. self.uid = common.authenticate(db, user, pwd, {})
  10. self.pwd = pwd
  11. self.db = db
  12. self.model = 'library.book'
  13. # 定义一个帮助方法来执行调用。有赖于前面对象存储的数据
  14. def execute(self, method, arg_list, kwarg_dict=None):
  15. return self.api.execute_kw(
  16. self.db, self.uid, self.pwd, self.model,
  17. method, arg_list, kwarg_dict or {})
  18. # search_read()方法接收一个可选的ID列表来获取数据
  19. def search_read(self, text=None):
  20. domain = [('name', 'ilike', text)] if text else []
  21. fields = ['id', 'name']
  22. return self.execute('search_read', [domain, fields])
  23. # create()方法用于创建给定书名的新书并返回所创建记录的 ID
  24. def create(self, title):
  25. vals = {'name': title}
  26. return self.execute('create', [vals])
  27. # write()方法中传入新书名和图书 ID 作为参数,并对该书执行写操作
  28. def write(self, title, id):
  29. vals = {'name': title}
  30. return self.execute('write', [[id], vals])
  31. # 实现unlink()方法
  32. def unlink(self, id):
  33. return self.execute('unlink', [[id]])
  34. # 测试代码在运行时执行
  35. if __name__ == '__main__':
  36. # 测试配置
  37. srv, db, port = 'localhost', 'dev13', 8069
  38. user, pwd = 'admin', '1'
  39. api = LibraryAPI(srv, port, db, user, pwd)
  40. from pprint import pprint
  41. pprint(api.search_read())
上海开阖软件有限公司 沪ICP备12045867号-1