III. Xây dựng mô-đun – Building modules
14. Dịch vụ Web
Mô-đun dịch vụ web cung cấp một giao diện chung cho tất cả các dịch vụ web: ● XML-RPC
● JSON-RPC
Các đối tượng kinh doanh cũng có thể được truy cập thông qua cơ chế đối tượng phân tán. Tất cả chúng đều có thể được sửa đổi thông qua giao diện máy khách với các chế độ xem theo ngữ cảnh.
Odoo có thể truy cập thông qua các giao diện XML-RPC / JSON-RPC, mà các thư viện tồn tại bằng nhiều ngôn ngữ.
Ví dụ sau đây là một chương trình Python 3 tương tác với máy chủ Odoo với thư viện xmlrpc.client:
importxmlrpc.client
root = 'http://%s:%d/xmlrpc/' % (HOST, PORT)
uid = xmlrpc.client.ServerProxy(root + 'common').login(DB, USER, PASS) print("Logged in as %s (uid: %d)" % (USER, uid))
# Create a new note
sock = xmlrpc.client.ServerProxy(root + 'object') args = {
'color' : 8,
'memo' : 'This is a note', 'create_uid': uid, }
note_id = sock.execute(DB, uid, PASS, 'note.note', 'create', args)
Bài tập
Thêm dịch vụ mới vào máy khách
Viết một chương trình Python có thể gửi yêu cầu XML-RPC đến PC đang chạy Odoo (của bạn hoặc của người hướng dẫn của bạn). Chương trình này sẽ hiển thị tất cả các phiên và số lượng chỗ ngồi tương ứng của họ. Nó cũng sẽ tạo ra một phiên mới cho một trong các khóa học.
Thư viện JSON-RPC
Ví dụ sau đây là một chương trình Python 3 tương tác với máy chủ Odoo với các thư viện Python tiêu chuẩn urllib.request và json. Ví dụ này giả sử ứng dụng Productivity ( note) được cài đặt: importjson importrandom importurllib.request HOST = 'localhost' PORT = 8069 DB = 'openacademy' USER = 'admin' PASS = 'admin'
defjson_rpc(url, method, params): data = { "jsonrpc": "2.0", "method": method, "params": params, "id": random.randint(0, 1000000000), }
"Content-Type":"application/json", })
reply = json.loads(urllib.request.urlopen(req).read().decode('UTF-8')) if reply.get("error"):
raiseException(reply["error"]) return reply["result"]
defcall(url, service, method, *args):
return json_rpc(url, "call", {"service": service, "method": method, "args": args})
# log in the given database
url = "http://%s:%s/jsonrpc" % (HOST, PORT) uid = call(url, "common", "login", DB, USER, PASS)
# create a new note
args = { 'color': 8,
'memo': 'This is another note', 'create_uid': uid,
}
note_id = call(url, "object", "execute", DB, uid, PASS, 'note.note', 'create', args) Ví dụ có thể dễ dàng thích nghi từ XML-RPC sang JSON-RPC.
ghi
Có một số API cấp cao bằng nhiều ngôn ngữ khác nhau để truy cập các hệ thống Odoo mà
không cần thông qua XML-RPC hoặc JSON-RPC một cách rõ ràng, chẳng hạn như:
● https://github.com/akretion/ooor ● https://github.com/OCA/odoorpc ● https://github.com/nicolas-van/openerp-client-lib ● http://pythonhosted.org/OdooRPC ● https://github.com/abhishek-jaiswal/php-openerp-lib 1
có thể vô hiệuhóa việc tạo tự động một số trường 2
viết truy vấn SQL thô là có thể, nhưng đòi hỏi sự cẩn thận vì nó bỏ qua tất cả các cơ chế xác thực và bảo mật Odoo.
Chỉnh sửa trên GitHub TRÊN TRANG NÀY
●
o Khởi động/Dừng máy chủ Odoo
o Xây dựng mô-đun Odoo
o Dạng xem cơ bản
o Quan hệ giữa các mô hình o Kế thừa
o Onchange
o Hạn chế mô hình
o Dạng xem Nâng cao
o An ninh
o Wizards
o Quốc tế