Действия - Odoo 10.0

Действия определяют поведение системы в ответ манипуляции пользователя например: авторизация, нажатие кнопки, выбор позиции в списке, и т.д.

Действия могут храниться в базе данных или возвращаться непосредственно в виде словарей, например, в методах кнопок при нажатии на них. Все действия имеют два обязательных атрибута:

type

категория текущего действия, определяет, какие поля могут использоваться и как интерпретируется действие

name

короткое, удобочитаемое описание действия для отображения в интерфейсе клиента

Клиент может получить действие в 4-х видах:

False

если какое либо диалоговое окно открыто то оно закроется

Строка

если действие клиента совпадает, интерпретируется как тег клиентского действия, иначе рассматривать как число

Число

считывает соответствующую запись действия из базы данных, может быть id в базе данных или external id

Словарь

рассматривается в качестве дескриптора действия клиента, а затем выполняется

Действия Окна (Window Actions) (ir.actions.act_window)

Это наиболее распространенный тип действия, используется для визуализации моделей с помощью представлений: действия окна определяются набор представлений (или конкретного представления) для модели (или конкретного набора записей модели).

Его поля:

res_model

модель, к которой будет применено представление

views

Список пар (view_id, view_type). Второй элемент каждой пары - это категория представления (List, Form, Graph, ...), а первый - это необязательный id базы данных (или False). Если id не указан, клиенту запросит возьмет представление указанного типа для запрошенной модели (это выполняется автоматически fields_view_get()). Тип представления, указанный в списке первым, будет назначаться по умолчанию и откроется при выполнении действия. Каждый тип представления должен быть указан в списке только один раз

res_id (необязательный параметр)

если представление form стоит по умолчанию, то этот параметр определяет запись, которая будет загружена в форму (в противном случае запись будет создана)

search_view_id (необязательный параметр)

пара (id, name), id - идентификатор базы данных для конкретного представления поиска, который будет загружен для действия. По умолчанию берется представление поиска назначенное по умолчанию для модели

target (необязательный параметр)

Определяет будут ли представления открыты: в области основного контента (current), в полноэкранном режиме (fullscreen) или в диалоговом окне/попапе (new). Используйте main вместо current, чтобы сбросить хлебные крошки(breadcrumbs). По умолчанию используется current.

context (необязательный параметр)

дополнительные данные для контекста, передаваемого в представления

domain (необязательный параметр)

фильтр, который добавляется ко всем поисковым запросам

limit (необязательный параметр)

количество записей, отображаемых в представлении List по умолчанию. По умолчанию 80

auto_search (optional)
whether a search should be performed immediately after loading the default view. Defaults to True

Например, для открытия клиентов (партнеров с установленным флагом customer) в представлении List и Form:

{
    "type": "ir.actions.act_window",
    "res_model": "res.partner",
    "views": [[False, "tree"], [False, "form"]],
    "domain": [["customer", "=", true]],
}

Или, чтобы открыть представление Form конкретного продукта (полученного отдельно) в новом диалоговом окне:

{
    "type": "ir.actions.act_window",
    "res_model": "product.product",
    "views": [[False, "form"]],
    "res_id": a_product_id,
    "target": "new",
}

Действия окна, хранящиеся в базе данных имеют несколько различных полей, которые игнорируются клиентами, и используются в основном для составления списка представлений views:

view_mode
comma-separated list of view types as a string. All of these types will be present in the generated views list (with at least a False view_id)
view_ids

M2M1 ссылка на объекты представлений, определяет начальное содержание views

view_id

конкретное представление добавляется к списку views в случае когда его тип является частью списка view_mode и еще не заполнен одним из представлений в view_ids

Это используется в основном когда действия определяются с помощью Файлы с данными:

<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>

будет использовано "my_specific_view" представление, даже в том случае если оно не является представлением по умолчанию для данной модели.

Составление последовательности views на стороне сервера состоит в следующем:

  • берется каждый (id, type) из view_ids (отсортированный по sequence)

  • если view_id определен а его тип еще на заполнен, добавляется его (id, type)

  • для каждого незаполненного тип в view_mode, добавляется (False, type)

URL действия (ir.actions.act_url)

Позволяет открывать URL (вебсайт/веб страница) через действие Odoo. Может быть настроено с помощью двух полей:

url

адрес, который открывается, когда срабатывает действие

target

открывает адрес в новом окне/вкладке, если установлен параметр new. Заменяет текущую страницу следующей, если self. По умолчанию new

{
    "type": "ir.actions.act_url",
    "url": "http://odoo.com",
    "target": "self",
}

заменит текущее содержимое страницы официальным сайтом Odoo.

Действия Сервера (ir.actions.server)

Позволяет запускать произвольных серверный код из любого допустимого места действия. Только два поля относятся к клиентам:

id

внутренний идентификатор действия сервера для запуска.

context (необязательный параметр)

Данные контекста для использования при выполнении действия сервера

Записи в базе данных значительно богаче и могут выполнять ряд конкретных или общих действий, основанных на их state. Некоторые поля (и соответствующее поведение) разделяются между состояниями:

model_id
Odoo model linked to the action, made available in evaluation contexts
condition (optional)
evaluated as Python code using the server action's evaluation context. If False, prevents the action from running. Default: True

Valid action types (state field) are extensible, the default types are:

code

The default and most flexible server action type, executes arbitrary Python code with the action's evaluation context. Only uses one specific type-specific field:

code
a piece of Python code to execute when the action is called
<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="code">
        raise Warning(object.name)
    </field>
</record>

This tends to be the only action type created from data files, other types aside from multi are simpler than Python code to define from the UI, but not from data files.

object_create

Creates a new record, from scratch (via create()) or by copying an existing record (via copy())

use_create

the creation policy, one of:

new
creates a record in the model specified by model_id
new_other
creates a record in the model specified by crud_model_id
copy_current
copies the record on which the action was invoked
copy_other
copies an other record, obtained via ref_object
fields_lines

поля для переопределения при создании или копировании записи. One2many с полями:

col1
ir.model.fields to set in the model implied by use_create
value

значение для поля интерпретируемое через type

type

Если value установлено, то value поля интерпретируется как буквенное значение (возможно преобразованное), если equation, то value поля интерпретируется как Python выражение и выполняется

crud_model_id
model in which to create a new record, if use_create is set to new_other
ref_object
Reference to an arbitrary record to copy, used if use_create is set to copy_other
link_new_record
boolean flag linking the newly created record to the current one via a many2one field specified through link_field_id, defaults to False
link_field_id

many2one ссылка на ir.model.fields, определяет m2o поле текущей записи где будут установлены вновь создаваемые записи (модели должны совпадать)

object_write

Similar to object_create but alters an existing records instead of creating one

use_write

write policy, one of:

current
write to the current record
other
write to an other record selected via crud_model_id and ref_object
expression
write to an other record whose model is selected via crud_model_id and whose id is selected by evaluating write_expression
write_expression
Python expression returning a record or an object id, used when use_write is set to expression in order to decide which record should be modified
fields_lines
see object_create
crud_model_id
see object_create
ref_object
see object_create

multi

Executes multiple actions one after the other. Actions to execute are defined via the child_ids m2m. If sub-actions themselves return actions, the last one will be returned to the client as the multi's own next action

trigger

Sends a signal to a workflow.

wkf_transition_id
Many2one to a workflow.transition to trigger
use_relational_model
if base (the default), trigger the signal on behalf of the current record. If relational, trigger the signal on behalf of a field of the current record selected through wkf_model_id and wkf_field_id

client_action

Indirection for directly returning an other action defined using action_id. Simply returns that action to the client for execution.

Вычисляемый контекст

Ряд ключевых слов, доступных в вычисляемом контексте или окружающих действий сервера:

model
the model object linked to the action via model_id
object, obj
only available if active_model and active_id are provided (via context) otherwise None. The actual record selected by active_id
pool
the current database registry
datetime, dateutil, time
corresponding Python modules
cr
the current cursor
user
the current user record
context
execution context
Warning
constructor for the Warning exception

Report Actions (ir.actions.report.xml)

Инициирует печать отчета

name (обязательный параметр)

полезен только в качестве запоминающегося описания, чтобы можно было найти в списке аналогичных объектов

model (обязательный параметр)

модель к которой относится отчет

report_type (обязательный параметр)

укажите qweb-pdf для создания PDF файлов печатных форм, или qweb-html для HTML

report_name

имя отчета (которое будет присвоено выданному PDF файлу)

groups_id

Many2many поле со ссылкой на группы которым разрешено использовать отчет

paperformat_id

Many2one формат бумаги, который вы хотите использовать для этого отчета (если не указан, будет использоваться формат компании)

attachment_use

если установлено True, то отчет сгенерируется один раз при первом использовании, и при следующих вызовах будет браться из сохраненной копии.

Может использоваться для отчетов, которые должны генерироваться только один раз (например, по юридическим причинам)

attachment

python выражение, которое определяет имя печатной формы; запись доступна как переменная object

Действия клиента (ir.actions.client)

Запускает действие, которое реализуется полностью на стороне клиента.

tag

идентификатор действия на стороне клиента, произвольная строка. О том как действовать получив, ее клиент должен уже знать

params (необязательный параметр)

словарь Python дополнительных данных для отправки клиенту, наряду с тегом действия клиента

target (необязательный параметр)

Определяет будут ли действия клиента открыты: в области основного контента (current), в полноэкранном режиме (fullscreen) или в диалоговом окне/попапе (new). Используйте main вместо current, чтобы сбросить хлебные крошки(breadcrumbs). По умолчанию используется current.

{
    "type": "ir.actions.client",
    "tag": "pos.ui"
}

говорит клиенту запустить интерфейс Рабочего Места Кассира, сервер вообще не в курсе, как он работает.

[1]

технически не M2M: добавляет поле последовательности и может состоять только из типа представления без id представления.