Dịch vụ Web

Một phần của tài liệu Tìm hiểu ODOO FRAMEWORK và xây dựng ứng dụng thương mại điện tử WEBSITE EPIC furniture (báo cáo cuối kì đồ án 1) (Trang 180 - 183)

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/ooorhttps://github.com/OCA/odoorpchttps://github.com/nicolas-van/openerp-client-libhttp://pythonhosted.org/OdooRPChttps://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ế

Một phần của tài liệu Tìm hiểu ODOO FRAMEWORK và xây dựng ứng dụng thương mại điện tử WEBSITE EPIC furniture (báo cáo cuối kì đồ án 1) (Trang 180 - 183)

Tải bản đầy đủ (PDF)

(183 trang)