Mục lục
ToggleTrong bài viết trước về kiến trúc tổng quan odoo, chúng ta có được giới thiệu sơ qua về cấu trúc 1 module. Trong đó chúng ta biết rằng mỗi module cần có manifest khai báo. Trong bài viết này chúng ta cùng tìm hiểu rõ hơn về Manifest trong lập trình Module cho Odoo.
File Manifest được dùng để khai báo cá python package dưới dạng module Odoo và để chỉ định các metadata (siêu dữ liệu) cho module. Nó được gọi là file __manifest__.py và chứa 1 dictionary python duy nhất để cấu hình thông tin cho module.
Ví dụ:
{ 'name': "A Module", 'version': '1.0', 'depends': ['base'], 'author': "Author Name", 'category': 'Category', 'description': """ Description text """, # data files always loaded at installation 'data': [ 'views/mymodule_view.xml', ], # data files containing optionally loaded demonstration data 'demo': [ 'demo/demo_data.xml', ], }
Tên có thể đọc được của module – tên hiển thị.
Version của module, nên sử dụng quy tắc semantic versioning https://semver.org/
Kế thừa mô tả của module, (reStructuredText)
Tác giả module
Url website của tác giả module
Giấy phép phân phối module, các giá trị hỗ trợ: GPL-2, GPL-3, AGPL-3, LGPL-3…
Danh mục phân loại trong Odoo. Mặc dù nên sử dụng các danh mục đang được cung cấp, nhưng trường này ở dưới dạng tự do, và các danh mcuj chưa có sẽ được tạo nhanh chóng. Hệ thống danh mục phân cấp có thể được tạo bằng dấu /.
Ví dụ Foo/Bar sẽ tạo ra danh mục Foo và danh mục Bar là con của danh mục Foo, Bar sẽ là danh mục của module
Chỉ địch các module cần phải tải trước khi load module hiện tại. Nói cách khác, các module phụ thuộc cần tải trước khi moduel hiện tại được tải. Chú ý, mặc dù module base luôn được tải, nhưng vẫn cần khai báo phụ thuộc để đảm bảo module đang được tạo ra hoạt động đúng.
Danh sách các file data luôn được cài đặt hoặc cập nhật với module, Đây là một danh sách các đường dẫn từ thư mục gốc của module
Danh sách các file dữ liệu luôn được cài đặt hoặc cập nhật trong chế độ demonstration mode (chế độ demo)
Nếu True, module sẽ tự động cài đặt nếu tất cả các phụ thuộc đã được cài đặt trước đó. Nó thường được sử dụng cho các module liên kết để thực hiện hoạt động tích hợp giữa 2 module độc lập khác.
Ví dụ sale_cmr phụ thuộc vào sale và crm và module này được đặt là auto_install. Khi cả 2 module sale và crm được cài đặt, nó sẽ tự động theo dõi các chiến dịch CRM vào các đơn hàng mà cả sale và crm đều không biết về nhau. Nếu nó là 1 list, nó phải chứa 1 tập hợp con của các phụ thuộc.
Module này sẽ tự động cài đặt ngay sau khi tất cả các phụ thuộc trong tập con đó được cài đặt. Các phụ thuộc còn lại cũng sẽ được cài đặt tự động. Nếu list này rỗng, module sẽ luôn luôn được tự động cài đặt – các thành phần phụ thuộc cũng sẽ được cài đặt.
Một dictionary chứa các phụ thuộc python và/hoặc binary. Với các phụ thuộc python, từ khóa python phải được xác định cho dictionary này và một danh sách các module python phải được import và gán cho nó. Với các phụ thuộc binary, từ khóa bin sẽ được định nghĩa cho dictionary này và 1 danh sách các tệp thực thi dạng binary sẽ được gán cho nó.
Module sẽ không được cài đặt nếu module python không được cài đặt trong máy chủ hoặc không tìm thấy đường dẫn thực thi binary trong môi trường PATH của máy chủ.
Cờ thông báo xem liệu module này có được coi là 1 ứng dụng chính thức hay chỉ là một mofule chức năng – module mà cung cấp thêm các tính năng cho module sẵn có
Định nghĩa về cách tất cả các file tĩnh được tải xem thêm https://www.odoo.com/documentation/16.0/developer/reference/frontend/assets.html#reference-assets
Người dùng có thể cài đặt được module từ giao diện web hay không
Người hoặc tổ chức chịu trách nhiệm bảo trì module này, mặc định tác giả là người bảo trì
Hook cho sự kiện install/uninstall, Giá trị là tên function định nghĩa trong __init__.py của module.
Pre_init_hook hàm này thực thi trước khi cài đặt module.
Post_init_hook thực thi sau khi module được cài đặt
Uninstall_hook thực thi sau khi module được gỡ cài đặt
Chú ý rằng, chỉ nên sử dụng các hook này khi cần thiết lập hoặc dọn dẹp cho module này khó thực thiện và không thể xử lý thông qua API
Deprecated, được thay thế bởi auto_install.
Trên đây là thông tin cấu hình về Manifest cho 1 module trong lập trình Odoo. Như đã viết chỉ có thuộc tính name là bắt buộc, các thuộc tính khác có thể không có. Để tìm hiểu kỹ hơn các bạn có thể làm và thử nghiệm để kiểm chứng kết quả.
Bình luận: