Mô-đun đầu tiên của bạn¶
Tổng quan¶
Chương này giúp bạn tạo mô-đun Odoo đầu tiên và triển khai nó trong dự án Odoo.sh của bạn.
Hướng dẫn này yêu cầu bạn đã tạo một dự án trên Odoo.sh và bạn biết URL của kho lưu trữ Github của mình.
Việc sử dụng Git và Github cơ bản được giải thích.
Các giả định dưới đây được đưa ra:
~/src là thư mục chứa các kho Git liên quan đến các dự án Odoo của bạn,
odoo là người dùng Github,
odoo-addons là kho lưu trữ Github,
feature-1 là tên của nhánh phát triển,
master là tên của nhánh sản xuất,
my_module là tên của mô-đun.
Thay thế chúng bằng các giá trị bạn chọn.
Tạo nhánh phát triển¶
Từ Odoo.sh¶
Trong chế độ xem chi nhánh:
nhấn nút
+
bên cạnh giai đoạn phát triển,chọn nhánh master trong vùng chọn Fork,
nhập feature-1 vào đầu vào To.
Sau khi bản dựng được tạo, bạn có thể truy cập trình chỉnh sửa và duyệt đến thư mục ~/src/user để truy cập vào mã của nhánh phát triển của bạn.


Từ máy tính của bạn¶
Sao chép kho lưu trữ Github trên máy tính của bạn:
$ mkdir ~/src
$ cd ~/src
$ git clone https://github.com/odoo/odoo-addons.git
$ cd ~/src/odoo-addons
Tạo một chi nhánh mới:
$ git checkout -b feature-1 master
Tạo cấu trúc mô-đun¶
Giàn giáo mô-đun¶
Mặc dù không cần thiết nhưng giàn giáo sẽ tránh được sự 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 một mô-đun mới bằng cách sử dụng tệp thực thi odoo-bin.
Từ trình soạn thảo Odoo.sh, trong một thiết bị đầu cuối:
$ odoo-bin scaffold my_module ~/src/user/
Hoặc, từ máy tính của bạn, nếu bạn có cài đặt Odoo:
$ ./odoo-bin scaffold my_module ~/src/odoo-addons/
Nếu bạn không muốn cài đặt Odoo trên máy tính của mình, bạn cũng có thể tải xuống mẫu cấu trúc mô-đun này
trong đó bạn thay thế mọi lần xuất hiện của my_module thành 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
└── views
├── templates.xml
└── views.xml
Cảnh báo
Không sử dụng các ký tự đặc biệt ngoài dấu gạch dưới ( _ ) cho tên mô-đun của bạn, thậm chí không có dấu gạch nối ( - ). Tên này được sử dụng cho các lớp Python trong mô-đun của bạn và việc có tên lớp có các ký tự đặc biệt ngoài dấu gạch dưới là không hợp lệ trong Python.
Bỏ ghi chú nội dung của các tập tin:
models/models.py, một ví dụ về mô hình với các trường của nó,
views/views.xml, dạng xem dạng cây và biểu mẫu, với các menu mở chúng,
demo/demo.xml, bản ghi demo cho mô hình ví dụ trên,
controllers/controllers.py, một ví dụ về bộ điều khiển triển khai một số tuyến đường,
views/templates.xml, hai ví dụ về chế độ xem qweb được sử dụng bởi các tuyến điều khiển ở trên,
__manifest__.py, tệp kê khai mô-đun của bạn, bao gồm cả tiêu đề, mô tả và tệp dữ liệu để tải. Bạn chỉ cần bỏ ghi chú tệp dữ liệu danh sách kiểm soát truy cập:
# 'security/ir.model.access.csv',
Thủ công¶
Nếu muốn tạo cấu trúc mô-đun theo cách thủ công, bạn có thể làm theo hướng dẫn Server framework 101 để hiểu cấu trúc của mô-đun và nội dung của từng tệp.
Đẩy nhánh phát triển¶
Giai đoạn thay đổi được cam kết
$ git add my_module
Cam kết thay đổi của bạn
$ git commit -m "My first module"
Đẩy các thay đổi của bạn vào kho lưu trữ từ xa
Từ thiết bị đầu cuối soạn thảo Odoo.sh:
$ git push https HEAD:feature-1
Lệnh trên được giải thích trong phần Cam kết & Đẩy các thay đổi của bạn của chương Online Editor. Nó bao gồm phần giải thích về việc bạn sẽ được nhắc nhập tên người dùng và mật khẩu cũng như những việc cần làm nếu bạn sử dụng xác thực hai yếu tố.
Hoặc, từ thiết bị đầu cuối máy tính của bạn:
$ git push -u origin feature-1
Bạn cần chỉ định -u Origin feature-1 chỉ cho lần đẩy đầu tiên. Từ thời điểm đó, để thúc đẩy những thay đổi trong tương lai từ máy tính của mình, bạn chỉ cần sử dụng
$ git push
Kiểm tra mô-đun của bạn¶
Nhánh của bạn sẽ xuất hiện trong các nhánh phát triển trong dự án của bạn.

Trong chế độ xem nhánh của dự án, bạn có thể nhấp vào tên nhánh của mình trong bảng điều hướng bên trái để truy cập lịch sử của nhánh.

Bạn có thể thấy ở đây những thay đổi bạn vừa thực hiện, bao gồm cả nhận xét bạn đã đặt. Khi cơ sở dữ liệu đã sẵn sàng, bạn có thể truy cập nó bằng cách nhấp vào nút Kết nối.

Nếu dự án Odoo.sh của bạn được định cấu hình để tự động cài đặt mô-đun, bạn sẽ trực tiếp nhìn thấy mô-đun đó trong số các ứng dụng cơ sở dữ liệu. Nếu không, nó sẽ có sẵn trong ứng dụng để cài đặt.
Sau đó, bạn có thể thử nghiệm mô-đun của mình, tạo bản ghi mới cũng như kiểm tra các tính năng và nút của mình.
Kiểm tra với dữ liệu sản xuất¶
Bạn cần phải có cơ sở dữ liệu sản xuất cho bước này. Bạn có thể tạo nó nếu bạn chưa có nó.
Sau khi bạn đã thử nghiệm mô-đun của mình 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ể thử nghiệm mô-đun đó với dữ liệu sản xuất bằng cách sử dụng nhánh thử nghiệm.
Bạn có thể:
Biến nhánh phát triển của bạn thành nhánh dàn dựng bằng cách kéo và thả nó vào tiêu đề phần staging.
Hợp nhất nó trong một nhánh dàn hiện có, bằng cách kéo và thả nó vào nhánh dàn đã cho.
Bạn cũng có thể sử dụng lệnh git merge
để hợp nhất các nhánh của mình.
Điều này sẽ tạo ra một bản dựng dàn dựng mới, bản dựng này sẽ sao chép cơ sở dữ liệu sản xuất và làm cho nó chạy bằng cách sử dụng máy chủ được cập nhật những thay đổi mới nhất của chi nhánh của bạn.

Khi cơ sở dữ liệu đã sẵn sàng, bạn có thể truy cập nó bằng nút Kết nối.
Cài đặt mô-đun của bạn¶
Mô-đun của bạn sẽ không được cài đặt tự động, bạn phải cài đặt nó từ menu ứng dụng. Thật vậy, mục đích của việc xây dựng dàn dựng là để kiểm tra hành vi của các thay đổi của bạn giống như trong quá trình sản xuất của bạn và trong quá trình sản xuất, bạn không muốn mô-đun của mình được cài đặt tự động mà theo yêu cầu.
Mô-đun của bạn có thể không xuất hiện trực tiếp trong ứng dụng để cài đặt, trước tiên bạn cần cập nhật danh sách ứng dụng của mình:
Kích hoạt chế độ nhà phát triển
trong menu ứng dụng, hãy nhấp vào nút Cập nhật danh sách ứng dụng,
trong hộp thoại xuất hiện, hãy nhấp vào nút Cập nhật.
Mô-đun của bạn sau đó sẽ xuất hiện trong danh sách các ứng dụng có sẵn.

Triển khai trong sản xuất¶
Khi bạn đã kiểm tra mô-đun của mình trong nhánh dàn dựng với dữ liệu sản xuất của mình và tin rằng nó đã sẵn sàng để sản xuất, bạn có thể hợp nhất nhánh của mình trong nhánh sản xuất.
Kéo và thả nhánh dàn dựng của bạn trên nhánh sản xuất.

Bạn cũng có thể sử dụng lệnh git merge
để hợp nhất các nhánh của mình.
Điều này sẽ hợp nhất những thay đổi mới nhất của nhánh dàn dựng của bạn trong nhánh sản xuất và cập nhật máy chủ sản xuất của bạn với những thay đổi mới nhất này.

Khi cơ sở dữ liệu đã sẵn sàng, bạn có thể truy cập nó bằng nút Kết nối.
Cài đặt mô-đun của bạn¶
Mô-đun của bạn sẽ không được cài đặt tự động, bạn phải cài đặt thủ công như được giải thích trong phần trên về cách cài đặt mô-đun của bạn trong cơ sở dữ liệu chạy thử.
Thêm một thay đổi¶
Phần này giải thích cách thêm thay đổi vào mô-đun của bạn bằng cách thêm trường mới vào mô hình và triển khai nó.
- Từ trình soạn thảo Odoo.sh,
duyệt đến thư mục mô-đun của bạn ~/src/user/my_module,
sau đó, mở tệp models/models.py.
- Hoặc từ máy tính của bạn,
sử dụng trình duyệt tệp bạn chọn để duyệt đến thư mục mô-đun của bạn ~/src/odoo-addons/my_module,
sau đó, mở tệp models/models.py bằng trình chỉnh sửa bạn chọn, chẳng hạn như Atom, Sublime Text, PyCharm, vim, ...
Sau đó, sau trường mô tả
description = fields.Text()
Thêm trường ngày giờ
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Sau đó, mở tệp views/views.xml.
Sau đó
<field name="value2"/>
Thêm vào
<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 chế độ xem được lưu trữ trong cơ sở dữ liệu.
Để được áp dụng trong 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 phải cập nhật mô-đun.
Nếu bạn muốn nền tảng Odoo.sh thực hiện cập nhật tự động khi bạn thực hiện các thay đổi, hãy tăng phiên bản mô-đun của bạn trong bảng kê khai của nó.
Mở tệp kê khai mô-đun __manifest__.py.
Thay thế
'version': '0.1',
với
'version': '0.2',
Nền tảng sẽ phát hiện sự thay đổi của 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.
Duyệt đến thư mục Git của bạn.
Sau đó, từ thiết bị đầu cuối Odoo.sh:
$ cd ~/src/user/
Hoặc, từ thiết bị đầu cuối máy tính của bạn:
$ cd ~/src/odoo-addons/
Sau đó, sắp xếp các thay đổi của bạn để được cam kết
$ git add my_module
Cam kết thay đổi của bạn
$ git commit -m "[ADD] my_module: add the start_datetime field to the model my_module.my_module"
Đẩy các thay đổi của bạn:
Từ thiết bị đầu cuối Odoo.sh:
$ git push https HEAD:feature-1
Hoặc, từ thiết bị đầu cuối máy tính của bạn:
$ git push
Sau đó, nền tảng sẽ tạo bản dựng mới cho nhánh feature-1.

Sau khi kiểm tra các thay đổi của mình, bạn có thể hợp nhất các thay đổi của mình trong nhánh sản xuất, chẳng hạn bằng cách kéo và thả nhánh trên nhánh sản xuất trong giao diện Odoo.sh. Khi 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 trực tiếp. Nếu không, bạn có thể cập nhật mô-đun theo cách thủ công 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ể xác định tệp requirements.txt liệt kê các thư viện bên ngoài mà mô-đun của bạn phụ thuộc vào.
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ụ: 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 mô-đun Python yêu cầu gói hệ thống để biên dịch và mô-đun Odoo của bên thứ ba.
Phần mở rộng PostgreSQL không được hỗ trợ trên Odoo.sh.
Để biết thêm thông tin, hãy tham khảo Câu hỏi thường gặp của chúng tôi.
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.
Tính năng này được giải thích trong phần này bằng cách sử dụng Thư viện Unidecode trong mô-đun của bạn.
Tạo một tệp requirements.txt trong 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.
Hoặc từ máy tính của bạn, tạo và mở tệp ~/src/odoo-addons/requirements.txt.
Thêm vào
unidecode
Sau đó, ví dụ: sử dụng thư viện trong mô-đun của bạn để xóa dấu khỏi các ký tự trong trường tên của mô hình của bạn.
Mở tệp models/models.py.
Trước
from odoo import models, fields, api
Thêm vào
from unidecode import unidecode
Sau đó
start_datetime = fields.Datetime('Start time', default=lambda self: fields.Datetime.now())
Thêm vào
@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)
Việc thêm phần phụ thuộc Python yêu cầu tăng phiên bản mô-đun để nền tảng cài đặt nó.
Chỉnh sửa bảng kê khai mô-đun __manifest__.py
Thay thế
'version': '0.2',
với
'version': '0.3',
Giai đoạn và cam kết các thay đổi của bạn:
$ git add requirements.txt
$ git add my_module
$ git commit -m "[IMP] my_module: automatically remove special chars in my_module.my_module name field"
Sau đó, đẩy các thay đổi của bạn:
Trong thiết bị đầu cuối Odoo.sh:
$ git push https HEAD:feature-1
Trong thiết bị đầu cuối máy tính của bạn:
$ git push