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 Action 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 Print 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ặc False). 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ởi fields_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ách

res_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ình

mụ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ất False 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ách view_mode và chưa được lấp đầy bởi một trong các chế độ xem trong view_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 theo sequence)

  • 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ới

  • self: 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ình crud_model_id theo thông số kỹ thuật của fields_lines.

  • object_write: Cập nhật (các) bản ghi hiện tại theo thông số kỹ thuật của fields_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ã)

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ường value được hiểu là một giá trị bằng chữ (có thể được chuyển đổi), nếu phương trình thì trường value đượ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 qua model_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 SoOn

  • datetime, dateutil, time, timezone các module Python tương ứng

  • log: 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.logging

  • Hà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ặc qweb-html cho HTML

tê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ụng chí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.

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ã 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ờ)