Hành động¶
Các hành động xác định hành vi của hệ thống nhằm phản hồi hành động của người dùng: đăng nhập, nút hành động, chọn hóa đơn, ...
Các hành động có thể được lưu trữ trong cơ sở dữ liệu hoặc được trả về trực tiếp dưới dạng từ điển, ví dụ: các phương pháp nút. Tất cả các hành động đều có chung hai thuộc tính bắt buộc:
- `` gõ``
danh mục của hành động hiện tại, xác định trường nào có thể được sử dụng và cách diễn giải hành động
tên
mô tả ngắn gọn về hành động mà người dùng có thể đọc được, có thể được hiển thị trong giao diện của khách hàng
Một khách hàng có thể nhận được hành động dưới 4 hình thức:
Sai
nếu bất kỳ hộp thoại hành động nào hiện đang mở, hãy đóng nó lại
- Một chuỗi
nếu client action khớp, hãy hiểu là thẻ của hành động client, nếu không thì coi như một số
- Một số
đọc bản ghi hành động tương ứng từ cơ sở dữ liệu, có thể là mã định danh cơ sở dữ liệu hoặc external id
- Một cuốn từ điển
coi như một bộ mô tả hành động của khách hàng và thực thi
Ràng buộc¶
Ngoài hai thuộc tính bắt buộc, tất cả các hành động cũng có chung các thuộc tính tùy chọn được sử dụng để trình bày một hành động trong menu ngữ cảnh của mô hình tùy ý:
ràng buộc_model_id
chỉ định mô hình mà hành động bị ràng buộc
Ghi chú
Đối với Hành động máy chủ, hãy sử dụng
model_id
.loại ràng buộc
chỉ định loại ràng buộc, phần lớn là menu ngữ cảnh mà hành động sẽ xuất hiện trong
hành động
(mặc định)Chỉ định rằng hành động sẽ xuất hiện trong menu ngữ cảnh
của mô hình bị ràng buộc.báo cáo
Chỉ định rằng hành động sẽ xuất hiện trong menu ngữ cảnh
của mô hình bị ràng buộc.
bind_view_types
danh sách các loại chế độ xem được phân tách bằng dấu phẩy mà hành động xuất hiện trong menu ngữ cảnh, chủ yếu là "danh sách" và / hoặc "biểu mẫu". Mặc định là
list,form
(cả danh sách và biểu mẫu)
Tác vụ cửa sổ (ir.actions.act_window
)¶
Loại hành động phổ biến nhất, được sử dụng để trình bày trực quan hóa mô hình thông qua views: hành động cửa sổ xác định một tập hợp các loại chế độ xem (và có thể cả các chế độ xem cụ thể) cho một mô hình (và có thể bản ghi cụ thể của mô hình).
Các lĩnh vực của nó là:
res_model
mô hình trình bày quan điểm cho
lượt xem
danh sách các cặp
(view_id, view_type)
. Phần tử thứ hai của mỗi cặp là danh mục của chế độ xem (cây, biểu mẫu, biểu đồ, ...) và phần tử đầu tiên là id cơ sở dữ liệu tùy chọn (hoặcFalse
). Nếu không cung cấp id, máy khách sẽ tìm nạp chế độ xem mặc định của loại được chỉ định cho mô hình được yêu cầu (việc này được thực hiện tự động bởifields_view_get()
). Loại đầu tiên của danh sách là loại chế độ xem mặc định và sẽ được mở theo mặc định khi hành động được thực thi. Mỗi loại chế độ xem phải xuất hiện tối đa một lần trong danh sáchres_id
(tùy chọn)nếu chế độ xem mặc định là
form
, hãy chỉ định bản ghi sẽ tải (nếu không thì bản ghi mới sẽ được tạo)search_view_id
(tùy chọn)Cặp
(id, name)
,id
là mã định danh cơ sở dữ liệu của chế độ xem tìm kiếm cụ thể để tải cho hành động. Mặc định tìm nạp chế độ xem tìm kiếm mặc định cho mô hìnhmục tiêu
(tùy chọn)liệu các chế độ xem sẽ được mở trong khu vực nội dung chính (`` hiện tại``), ở chế độ toàn màn hình (`` toàn màn hình``) hay trong hộp thoại/cửa sổ bật lên (`` mới``). Sử dụng
chính
thay vìhiện tại
để xóa đường dẫn. Mặc định là `` hiện tại``.ngữ cảnh
(tùy chọn)dữ liệu ngữ cảnh bổ sung để chuyển đến chế độ xem
tên miền
(tùy chọn)lọc tên miền để ngầm thêm vào tất cả các truy vấn tìm kiếm xem
giới hạn
(tùy chọn)số bản ghi hiển thị trong danh sách theo mặc định. Mặc định là 80 trong máy khách web
Ví dụ: để mở khách hàng (hợp tác với bộ cờ khách hàng
) với chế độ xem danh sách và biểu mẫu:
{
"type": "ir.actions.act_window",
"res_model": "res.partner",
"views": [[False, "tree"], [False, "form"]],
"domain": [["customer", "=", true]],
}
Hoặc để mở chế độ xem biểu mẫu của một sản phẩm cụ thể (được lấy riêng) trong hộp thoại mới:
{
"type": "ir.actions.act_window",
"res_model": "product.product",
"views": [[False, "form"]],
"res_id": a_product_id,
"target": "new",
}
Các hành động của cửa sổ trong cơ sở dữ liệu có một số trường khác nhau mà máy khách nên bỏ qua, chủ yếu được sử dụng để soạn danh sách `` lượt xem``:
view_mode
(mặc định=cây,biểu mẫu
)danh sách các loại chế độ xem được phân tách bằng dấu phẩy dưới dạng một chuỗi (/!\ Không có dấu cách /!\). Tất cả các loại này sẽ có trong danh sách
views
được tạo (có ít nhấtFalse
view_id)view_ids
M2M1 để xem các đối tượng, xác định nội dung ban đầu của
views
Ghi chú
Các khung nhìn Act_window cũng có thể được xác định rõ ràng thông qua
ir.actions.act_window.view
.Nếu bạn định cho phép nhiều chế độ xem cho mô hình của mình, hãy ưu tiên sử dụng ir.actions.act_window.view thay vì hành động
view_ids
<record model="ir.actions.act_window.view" id="test_action_tree"> <field name="sequence" eval="1"/> <field name="view_mode">tree</field> <field name="view_id" ref="view_test_tree"/> <field name="act_window_id" ref="test_action"/> </record>
xem_id
chế độ xem cụ thể được thêm vào danh sách
views
trong trường hợp loại của nó là một phần của danh sáchview_mode
và chưa được lấp đầy bởi một trong các chế độ xem trongview_ids
Chúng chủ yếu được sử dụng khi xác định hành động từ Hồ sơ dữ liệu:
<record model="ir.actions.act_window" id="test_action">
<field name="name">A Test Action</field>
<field name="res_model">some.model</field>
<field name="view_mode">graph</field>
<field name="view_id" ref="my_specific_view"/>
</record>
sẽ sử dụng chế độ xem "my_spec_view" ngay cả khi đó không phải là chế độ xem mặc định cho mô hình.
Thành phần phía máy chủ của chuỗi `` lượt xem`` như sau:
lấy từng
(id, type)
từview_ids
(sắp xếp theosequence
)nếu
view_id
được xác định và loại của nó chưa được điền, hãy thêm(id, type)
của nóđối với mỗi loại chưa điền trong
view_mode
, hãy thêm(False, type)
- 1
về mặt kỹ thuật không phải là M2M: thêm trường trình tự và có thể chỉ bao gồm một loại chế độ xem mà không có id chế độ xem.
Hành động URL (ir.actions.act_url
)¶
Cho phép mở URL (trang web/trang web) thông qua hành động SoOn. Có thể tùy chỉnh thông qua hai trường:
url
địa chỉ để mở khi kích hoạt hành động
mục tiêu
(mặc định=mới
)các giá trị có sẵn là:
mới
: mở URL trong cửa sổ/trang mớiself
: mở URL trong cửa sổ/trang hiện tại (thay thế nội dung thực tế)download
: chuyển hướng đến URL tải xuống
ví dụ:
{
"type": "ir.actions.act_url",
"url": "https://odoo.com",
"target": "self",
}
Điều này sẽ thay thế phần nội dung hiện tại bằng trang chủ SoOn.
Tác vụ máy chủ (ir.actions.server
)¶
Cho phép kích hoạt mã máy chủ phức tạp từ bất kỳ vị trí hành động hợp lệ nào. Chỉ có hai lĩnh vực có liên quan đến khách hàng:
id
mã định danh trong cơ sở dữ liệu của hành động máy chủ sẽ chạy
ngữ cảnh
(tùy chọn)dữ liệu ngữ cảnh để sử dụng khi chạy hành động máy chủ
Các bản ghi trong cơ sở dữ liệu phong phú hơn đáng kể và có thể thực hiện một số hành động cụ thể hoặc chung dựa trên trạng thái
của chúng. Một số trường (và hành vi tương ứng) được chia sẻ giữa các trạng thái:
model_id
Mô hình SoOn được liên kết với hành động.
nhà nước
code
: Thực thi mã python được cung cấp thông qua đối sốcode
.object_create
: Tạo một bản ghi mới của mô hìnhcrud_model_id
theo thông số kỹ thuật củafields_lines
.object_write
: Cập nhật (các) bản ghi hiện tại theo thông số kỹ thuật củafields_lines
multi
: Thực hiện một số hành động được đưa ra thông qua đối sốchild_ids
.
Trường trạng thái¶
Tùy thuộc vào trạng thái của nó, hành vi được xác định thông qua các trường khác nhau. Trạng thái liên quan được đưa ra sau mỗi trường.
mã
(mã)Chỉ định một đoạn mã Python để thực thi khi hành động được gọi
<record model="ir.actions.server" id="print_instance"> <field name="name">Res Partner Server Action</field> <field name="model_id" ref="model_res_partner"/> <field name="state">code</field> <field name="code"> raise Warning(record.name) </field> </record>
Ghi chú
Đoạn mã có thể xác định một biến có tên
action
, biến này sẽ được trả về máy khách dưới dạng hành động tiếp theo cần thực hiện:<record model="ir.actions.server" id="print_instance"> <field name="name">Res Partner Server Action</field> <field name="model_id" ref="model_res_partner"/> <field name="state">code</field> <field name="code"> if record.some_condition(): action = { "type": "ir.actions.act_window", "view_mode": "form", "res_model": record._name, "res_id": record.id, } </field> </record>
sẽ yêu cầu khách hàng mở một biểu mẫu cho bản ghi nếu nó đáp ứng một số điều kiện
crud_model_id
(tạo)(bắt buộc)mô hình để tạo một bản ghi mới
link_field_id
(tạo)many2one thành
ir.model.fields
, chỉ định trường m2o của bản ghi hiện tại mà bản ghi mới được tạo sẽ được đặt trên đó (các mô hình phải khớp)fields_lines
(tạo/ghi)các trường để ghi đè khi tạo hoặc sao chép bản ghi.
One2many
với các trường:col1
ir.model.fields
để đặt trong mô hình liên quan (crud_model_id
để tạo,model_id
để cập nhật)giá trị
giá trị cho trường, được diễn giải thông qua
type
loại
(giá trị|tham chiếu|phương trình)Nếu
value
, trườngvalue
được hiểu là một giá trị bằng chữ (có thể được chuyển đổi), nếuphương trình
thì trườngvalue
được hiểu là biểu thức Python và được đánh giá
child_ids
(đa)Chỉ định nhiều hành động phụ (
ir.actions.server
) để thực thi ở trạng thái đa. Nếu các hành động phụ tự trả về các hành động thì hành động cuối cùng sẽ được trả về cho khách hàng dưới dạng hành động tiếp theo của chính đa nhóm
Bối cảnh đánh giá¶
Một số khóa có sẵn trong bối cảnh đánh giá hoặc các hành động xung quanh máy chủ:
Đối tượng mô hình
model
được liên kết với hành động thông quamodel_id
record
/records
bản ghi/recorset mà hành động được kích hoạt, có thể bị vô hiệu.env
Môi trường SoOndatetime
,dateutil
,time
,timezone
các module Python tương ứnglog: log(message, level='info')
chức năng ghi nhật ký để ghi lại thông tin gỡ lỗi trong bảng ir.loggingHàm tạo
Cảnh báo
cho ngoại lệCảnh báo
Hành động báo cáo (ir.actions.report
)¶
Kích hoạt việc in báo cáo.
Nếu bạn xác định báo cáo của mình thông qua thẻ <record>
thay vì thẻ <report>
và muốn hành động hiển thị trong menu In của chế độ xem mô hình, bạn cũng cần chỉ định bind_model_id
từ : ref:tham chiếu/ràng buộc
. Không cần thiết phải đặt bind_type
thành report
, vì ir.actions.report
sẽ mặc định mặc định như vậy.
tên
(bắt buộc)được sử dụng làm tên tệp nếu
print_report_name
không được chỉ định. Mặt khác, chỉ hữu ích như một bản ghi nhớ/mô tả của báo cáo khi tìm kiếm một báo cáo trong danh sách sắp xếp nào đó- `` mô hình`` (bắt buộc)
mô hình mà báo cáo của bạn sẽ hướng tới
report_type
(mặc định=qweb-pdf)qweb-pdf
cho báo cáo PDF hoặcqweb-html
cho HTMLtên_báo cáo
(bắt buộc)tên (external id) của mẫu qweb được sử dụng để hiển thị báo cáo
print_report_name
biểu thức python xác định tên của báo cáo.
nhóm_id
Many2many
cho các nhóm được phép xem/sử dụng báo cáo hiện tạiđa
nếu được đặt thành
True
, hành động sẽ không được hiển thị trên chế độ xem biểu mẫu.định dạng giấy_id
Many2one
sang định dạng giấy bạn muốn sử dụng cho báo cáo này (nếu không được chỉ định, định dạng công ty sẽ được sử dụng)tệp đính kèm_sử dụng
nếu được đặt thành
True
, báo cáo chỉ được tạo một lần trong lần đầu tiên nó được yêu cầu và được in lại từ báo cáo được lưu trữ sau đó thay vì được tạo lại mỗi lần.Có thể được sử dụng cho các báo cáo chỉ được tạo một lần (ví dụ: vì lý do pháp lý)
- `` tập tin đính kèm``
biểu thức python xác định tên của báo cáo; bản ghi có thể truy cập được dưới dạng biến `` object``
Hành động của khách hàng (ir.actions.client
)¶
Kích hoạt một hành động được thực hiện hoàn toàn trong máy khách.
thẻ
mã định danh phía máy khách của hành động, một chuỗi tùy ý mà máy khách phải biết cách phản ứng
params
(tùy chọn)một từ điển Python chứa dữ liệu bổ sung để gửi cho khách hàng, cùng với thẻ hành động của khách hàng
mục tiêu
(tùy chọn)liệu hành động của máy khách sẽ được mở trong vùng nội dung chính (
current
), ở chế độ toàn màn hình (toàn màn hình
) hay trong hộp thoại/cửa sổ bật lên (mới
). Sử dụngchính
thay vìhiện tại
để xóa đường dẫn. Mặc định là `` hiện tại``.
{
"type": "ir.actions.client",
"tag": "pos.ui"
}
yêu cầu khách hàng khởi động giao diện Điểm bán hàng, máy chủ không biết giao diện POS hoạt động như thế nào.
Xem thêm
Hành động tự động (ir.cron
)¶
Các hành động được kích hoạt tự động theo tần suất được xác định trước.
tên
Tên của hành động tự động (Chủ yếu được sử dụng trong hiển thị nhật ký)
số_khoảng
Số lượng interval_type uom giữa hai lần thực hiện hành động
loại_khoảng
Đơn vị đo khoảng tần suất (
phút
,giờ
,ngày
,tuần
,tháng
)- `` cuộc gọi số``
Số lần hành động này phải được thực hiện. Nếu hành động dự kiến sẽ chạy vô thời hạn, hãy đặt thành
-1
.doall
Boolean xác định chính xác liệu các hành động bị bỏ lỡ có được thực thi trong trường hợp máy chủ khởi động lại hay không.
model_id
Model mà hành động này sẽ được gọi
mã
Mã nội dung của hành động. Có thể là một cuộc gọi đơn giản đến phương thức của mô hình:
model.<method_name>()
cuộc gọi tiếp theo
Ngày thực hiện dự kiến tiếp theo của hành động này (định dạng ngày/giờ)