Tạo mô-đun¶
Trước khi tạo mô-đun đầu tiên, cần phải tạo dự án Odoo.sh và biết URL kho lưu trữ GitHub của bạn.
Bảng thuật ngữ
~/srclà thư mục chứa các kho lưu trữ Git liên quan đến các dự án Odoo của bạn.odoolà người dùng GitHub.odoo-addonslà kho lưu trữ GitHub.feature-1là tên của nhánh phát triển.mainlà tên của nhánh sản xuất.my_modulelà tên của mô-đun.
Thay thế những giá trị này khi cần thiết.
Tạo nhánh phát triển¶
Từ Giao diện Nhánh:
Trong bảng điều hướng nhánh, nhấp vào nút + (Nhánh phát triển mới) bên cạnh Development.
Trong Fork, chọn nhánh
main.Trong To, nhập
feature-1.
Sau khi bản build sẵn sàng, bạn có thể truy cập trình soạn thảo và mã nguồn của nhánh phát triển từ thư mục ~/src/user.
Sao chép kho lưu trữ GitHub của bạn về máy tính bằng cách chạy các lệnh sau:
mkdir ~/src cd ~/src git clone https://github.com/odoo/odoo-addons.git cd ~/src/odoo-addons
Tạo nhánh mới bằng cách chạy:
git checkout -b feature-1 main
Tạo cấu trúc phân hệ¶
Tạo cấu trúc khung¶
Mặc dù không bắt buộc, việc tạo cấu trúc khung giúp tránh công việc nhàm chán khi thiết lập cấu trúc mô-đun Odoo cơ bản. Bạn có thể tạo cấu trúc khung cho một mô-đun mới bằng cách sử dụng tệp thực thi odoo-bin.
Từ terminal trình soạn thảo, chạy:
odoo-bin scaffold my_module ~/src/user/
Với Odoo đã cài đặt trên máy tính của bạn, chạy:
./odoo-bin scaffold my_module ~/src/odoo-addons/
Mẹo
Nếu bạn không muốn cài đặt Odoo trên máy tính, bạn cũng có thể tải xuống mẫu cấu trúc mô-đun này. Thay thế mọi lần xuất hiện của my_module bằng tên bạn chọn.
Cấu trúc dưới đây sẽ được tạo ra:
my_module
├── __init__.py
├── __manifest__.py
├── controllers
│ ├── __init__.py
│ └── controllers.py
├── demo
│ └── demo.xml
├── models
│ ├── __init__.py
│ └── models.py
├── security
│ ├── ir.model.access.csv
│ └── models.py
└── views
├── templates.xml
└── views.xml
Cảnh báo
Chỉ sử dụng các ký tự chữ và số (a-z, 0-9) hoặc dấu gạch dưới (_) khi đặt tên mô-đun của bạn, vì tên của nó được dùng cho các lớp Python, và tên lớp chứa các ký tự đặc biệt khác ngoài dấu gạch dưới không hợp lệ trong Python.
Bỏ chú thích các tệp sau:
models/models.pymột ví dụ về mô hình với các trường của nóviews/views.xmlmột chế độ xem dạng cây và biểu mẫu, với các menu mở chúngdemo/demo.xmlcác bản ghi demo cho mô hình ví dụcontrollers/controllers.pymột ví dụ về bộ điều khiển triển khai một số tuyến đườngviews/templates.xmlhai chế độ xem qweb ví dụ được sử dụng bởi các tuyến đường của bộ điều khiển__manifest__.pytệp khai báo của mô-đun, bao gồm tiêu đề, mô tả và các tệp dữ liệu cần tải. Bỏ chú thích tệp dữ liệu danh sách kiểm soát truy cập:# 'security/ir.model.access.csv',
Thủ công¶
Để tạo cấu trúc mô-đun theo cách thủ công, hãy làm theo hướng dẫn Server framework 101 để hiểu cấu trúc của một mô-đun và nội dung của từng tệp.
Đẩy lên nhánh phát triển¶
Đưa các thay đổi vào trạng thái sẵn sàng để commit bằng cách chạy:
git add my_module
Commit các thay đổi của bạn bằng cách chạy:
git commit -m "My first module"Đẩy các thay đổi của bạn lên kho lưu trữ từ xa bằng cách chạy:
Từ terminal trình soạn thảo, chạy:
git push https HEAD:feature-1
Chạy:
git push -u origin feature-1
Chỉ cần chỉ định
-u origin feature-1lần đầu tiên bạn đẩy. Sau đó, chạy:git push
Kiểm tra mô-đun¶
Nhánh sẽ xuất hiện trong phần Development của bảng điều hướng Branches view.
Nhấp vào tên nhánh để xem lịch sử của nó, bao gồm các thay đổi bạn vừa đẩy lên. Sau khi cơ sở dữ liệu sẵn sàng, nhấp Connect để truy cập vào nó.
Nếu dự án Odoo.sh của bạn được cấu hình để tự động cài đặt mô-đun, nó sẽ xuất hiện trực tiếp trên bảng điều khiển cơ sở dữ liệu. Ngược lại, nó sẽ có sẵn để cài đặt trong ứng dụng Apps.
Kiểm thử bằng dữ liệu production¶
Ghi chú
Cần có cơ sở dữ liệu sản xuất cho bước này. Nếu bạn chưa có, hãy tạo một cơ sở dữ liệu.
Sau khi bạn đã kiểm tra mô-đun trong bản dựng phát triển với dữ liệu demo và tin rằng nó đã sẵn sàng, bạn có thể kiểm tra nó với dữ liệu sản xuất bằng cách sử dụng nhánh staging.
Bạn có thể:
Chuyển đổi nhánh phát triển của bạn thành nhánh staging bằng cách kéo và thả nó vào phần Staging.
Hợp nhất nó vào một nhánh staging hiện có bằng cách kéo và thả nó vào nhánh đó.
Sử dụng lệnh
git mergeđể hợp nhất các nhánh của bạn.
Điều này tạo ra một bản dựng staging mới sao chép cơ sở dữ liệu sản xuất và chạy nó trên máy chủ được cập nhật với các thay đổi mới nhất từ nhánh của bạn.
Sau khi cơ sở dữ liệu sẵn sàng, nhấp vào Connect để truy cập.
Cài đặt mô-đun¶
Cài đặt mô-đun từ ứng dụng Apps. Vì mô-đun có thể không xuất hiện trực tiếp trong danh sách ứng dụng, hãy cập nhật danh sách ứng dụng bằng cách kích hoạt chế độ nhà phát triển và nhấp vào .
Ghi chú
Mô-đun không được cài đặt tự động vì mục đích của bản dựng staging là kiểm tra hành vi của các thay đổi như chúng sẽ diễn ra trên cơ sở dữ liệu sản xuất, do đó bạn sẽ không muốn một mô-đun được cài đặt tự động.
Triển khai trong production¶
Sau khi bạn đã kiểm tra mô-đun trong nhánh staging với dữ liệu sản xuất và tin rằng nó đã sẵn sàng cho sản xuất, bạn có thể hợp nhất nhánh của mình vào nhánh sản xuất bằng cách:
Kéo và thả nhánh staging vào nhánh sản xuất.
Sử dụng lệnh
git mergeđể hợp nhất các nhánh của bạn.
Điều này hợp nhất các thay đổi mới nhất từ nhánh staging vào nhánh sản xuất và cập nhật máy chủ sản xuất với chúng.
Sau khi cơ sở dữ liệu sẵn sàng, nhấp vào Connect để truy cập.
Cài đặt mô-đun¶
Cài đặt mô-đun từ ứng dụng Apps. Vì mô-đun có thể không xuất hiện trực tiếp trong danh sách ứng dụng, hãy cập nhật danh sách ứng dụng bằng cách kích hoạt chế độ nhà phát triển và nhấp vào .
Thêm một thay đổi¶
Phần này giải thích cách thêm một thay đổi trong mô-đun của bạn bằng cách thêm một trường mới trong mô hình và triển khai nó.
Từ trình soạn thảo hoặc từ máy tính của bạn, mở thư mục mô-đun
~/src/odoo-addons/my_module, sau đó mở tệpmodels/models.pyđể chỉnh sửa. Sau trường mô tả:description = fields.Text()
thêm trường datetime:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Mở tệp
views/views.xmlvà sau:<field name="value2"/>
thêm:
<field name="start_datetime"/>
Những thay đổi này làm thay đổi cấu trúc cơ sở dữ liệu bằng cách thêm một cột vào bảng và sửa đổi một chế độ xem. Để áp dụng cho cơ sở dữ liệu hiện có, chẳng hạn như cơ sở dữ liệu sản xuất của bạn, những thay đổi này yêu cầu mô-đun phải được cập nhật. Nếu bạn muốn việc cập nhật được thực hiện tự động bởi nền tảng Odoo.sh khi bạn đẩy các thay đổi của mình, hãy tăng phiên bản của mô-đun trong tệp kê khai của nó bằng cách mở
__manifest__.pyvà thay thế:'version': '0.1',
bằng:
'version': '0.2',
Nền tảng sẽ phát hiện thay đổi phiên bản và kích hoạt cập nhật mô-đun khi triển khai bản sửa đổi mới.
Tiếp theo, đẩy các thay đổi.
Khi bạn đã kiểm tra các thay đổi của mình, bạn có thể hợp nhất chúng vào nhánh sản xuất, chẳng hạn, bằng cách kéo và thả nhánh vào nhánh sản xuất trong giao diện Odoo.sh. Vì bạn đã tăng phiên bản mô-đun trong tệp kê khai, nền tảng sẽ tự động cập nhật mô-đun và trường mới của bạn sẽ có sẵn ngay lập tức. Nếu không, bạn có thể thủ công cập nhật mô-đun trong danh sách ứng dụng.
Sử dụng thư viện Python bên ngoài¶
Nếu bạn muốn sử dụng thư viện Python bên ngoài không được cài đặt theo mặc định, bạn có thể định nghĩa tệp requirements.txt liệt kê các thư viện bên ngoài mà các mô-đun của bạn phụ thuộc vào. Nền tảng sẽ sử dụng tệp này để tự động cài đặt các thư viện Python mà dự án của bạn cần.
Ghi chú
Không thể cài đặt hoặc nâng cấp các gói hệ thống trên cơ sở dữ liệu Odoo.sh (ví dụ: các gói apt). Tuy nhiên, trong những điều kiện cụ thể, các gói có thể được xem xét để cài đặt. Điều này cũng áp dụng cho các mô-đun Python yêu cầu các gói hệ thống để biên dịch và cho các mô-đun Odoo của bên thứ ba.
Các tiện ích mở rộng PostgreSQL không được hỗ trợ trên Odoo.sh do đó không thể cài đặt các tiện ích mở rộng (như PostGIS, ltree, ...) trong cơ sở dữ liệu Odoo.sh.
Ví dụ, để sử dụng thư viện Unidecode trong mô-đun của bạn:
Tạo tệp
requirements.txttrong thư mục gốc của kho lưu trữ của bạn:Từ trình soạn thảo Odoo.sh, tạo và mở tệp
~/src/user/requirements.txt.Từ máy tính của bạn, tạo và mở tệp
~/src/odoo-addons/requirements.txt.
Thêm vào tệp:
unidecode
Bây giờ bạn có thể sử dụng thư viện trong mô-đun của mình, chẳng hạn, để loại bỏ dấu khỏi các ký tự trong trường tên của mô hình của bạn. Để làm như vậy, mở tệp
models/models.pyvà trước:from odoo import models, fields, api
thêm:
from unidecode import unidecode
Sau:
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
thêm:
@api.model def create(self, values): if 'name' in values: values['name'] = unidecode(values['name']) return super(my_module, self).create(values) def write(self, values): if 'name' in values: values['name'] = unidecode(values['name']) return super(my_module, self).write(values)
Tăng phiên bản mô-đun để cài đặt phụ thuộc Python bằng cách chỉnh sửa tệp kê khai của mô-đun
__manifest__.py.Sau đó, đẩy các thay đổi.
Mẹo
Đưa tệp
requirements.txtvào vùng tổ chức bằng cách chạygit add requirements.txt.