odoo官方文档第三章 Actions

Actions

操作定义系统响应用户操作的行为:登录,操作按钮,发票选择,......

动作可以存储在数据库中,或者作为字典直接返回到例如数据库中。 按钮方法。 所有操作共享两个必需属性:

type

当前action的类别,确定可以使用哪些字段以及如何解释action

name

用户可读且简短描述的action,可能会显示在客户端的界面中

客户可以获得4种形式的行动:

False

如果当前打开任何操作对话框,请将其关闭

A string

如果客户端action匹配,则将其解释为客户端action的标记,否则将其视为数字

A number

从数据库中读取相应的action记录,可以是数据库标识符或外部id

A dictionary

视为客户端操作描述符并执行

Window Actions (ir.actions.act_window)

最常见的action类型,用于通过视图显示模型的可视化:窗口操作定义模型的一组视图类型(以及可能的特定视图)(以及可能的模型的特定记录)。

它的字段是:

res.model

呈现视图的模型

views

类似(view_idview_type)这种一对的列表。 每对的第二个元素是视图的类别(树,表单,图形,...),第一个是可选的数据库ID(或False)。 如果未提供id,则客户端应获取所请求模型的指定类型的默认视图(这由fields_view_get()自动完成)。 列表的第一种类型是默认视图类型,默认情况下将在执行操作时打开。 每个视图类型在列表中最多只能出现一次

res_id(optional)

如果默认视图是表单,则指定要加载的记录(否则应创建新记录)

search_view_id(optional)

(id,name)这一对,id是要为操作加载的特定搜索视图的数据库标识符。 默认为获取模型的默认搜索视图

target(optional)

是否应在主要内容区域(current)、全屏模式(fullscreen)或对话框/弹出窗口(new)中打开视图。 使用main而不是current来清除面包屑。 默认为current

context (optional)

要传递给视图的其他context数据

domain (optional)

过滤域以隐式添加到所有视图搜索查询

limit (optional)

默认情况下列表中显示的记录数。 Web客户端中默认为80

auto_search (optional)

是否应在加载默认视图后立即执行搜索。 默认为True

例如,要使用列表和表单视图打开costomers(具有costomer标志集的合作伙伴):

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

或者在新对话框中打开特定product的表单视图(单独获取):

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

数据库内窗口操作有几个不同的字段,客户端应该忽略这些字段,主要用于组成view列表:

view_mode

以逗号分隔的视图类型列表作为字符串。 所有这些类型都将出现在生成的view列表中(至少有一个Falseview_id)

view_ids

M2M1查看对象,定义view的初始内容

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序列的服务器端组合如下:

  • view_ids中获取每个(id,type)(按sequence排序)
  • 如果定义了view_id并且其类型尚未填充,则追加其(id,type
  • 对于view_mode中的每个未填充类型,追加(False,type

URL Actions (ir.actions.act_url)

允许通过Odoo操作打开URL(网站/网页)。 可以通过两个字段进行定制:

url

激活操作时打开的地址

target

如果是new,则在新窗口/页面中打开地址,如果是self则用页面替换当前内容。 默认为new

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

将替换Odoo主页的当前内容部分。

Server Actions (ir.actions.server)

允许从任何有效的操作位置触发复杂的服务器代码。 只有两个字段与客户端相关:

id

要运行的服务器操作的数据库内标识符

context (optional)

运行服务器操作时要使用的context数据

数据库内记录非常丰富,可以根据其state执行许多特定或通用操作。 某些字段(和相应的行为)在状态之间共享:

model_id

Odoo模型与行动相关联,在评估环境中提供

condition (optional)

使用服务器操作的评估上下文评估为Python代码。 如果为False,则阻止该操作运行。 默认值:True

有效的操作类型(state字段)是可扩展的,默认类型是:

code

默认且最灵活的服务器操作类型,使用操作的评估context执行任意Python代码。 仅使用一个特定类型的特定字段:

code

调用操作时要执行的一段Python代码

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

代码段可以定义一个名为action的变量,该变量将作为下一个要执行的操作返回给客户端:

<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">
        if object.some_condition():
            action = {
                "type": "ir.actions.act_window",
                "view_mode": "form",
                "res_model": object._name,
                "res_id": object.id,
            }
    </field>
</record>

如果满足某些条件,将要求客户打开一份表格进行记录

这往往是从数据文件创建的唯一操作类型,除了multi之外的其他类型比从Python定义的Python代码更简单,但不是从数据文件定义。

object_create

从头开始(通过create())或复制现有记录(通过copy())创建新记录

use_create

创作规则,其中之一:

new

model_id指定的模型中创建记录

new_other

crud_model_id指定的模型中创建记录

copy_current

复制调用操作的记录

copy_other

复制通过ref_object获得的其他记录

fields_lines

创建或复制记录时要覆盖的字段。 One2many与领域:

col1

ir.model.fieldsuse_create隐含的模型中设置

value

字段的值,通过type解释

type

如果是value,则value字段被解释为文字值(可能被转换),如果equation,则将value字段解释为Python表达式并进行求值

crud_model_id

如果use_create设置为new_other,则在其中创建新记录的模型

ref_object

Reference要复制的任意记录,如果use_create设置为copy_other,则使用该记录

boolean flag通过link_field_id指定的many2one字段将新创建的记录链接到当前记录,默认为False

many2one到ir.model.fields,指定当前记录的m2o字段,在该字段上应该设置新创建的记录(模型应该匹配)

object_write

object_create类似,但改变现有记录而不是创建记录

use_write

write政策,其中一个:

current

写入当前记录

other

通过crud_model_idref_object写入选择的其他记录

expression

写入另一条记录,其模型通过crud_model_id选择,其id通过评估write_expression来选择

write_expression

Python表达式返回记录或对象id,当use_write设置为expression时使用,以便决定应修改哪条记录

fields_lines

see object_create

crud_model_id

see object_create

ref_object

see object_create

multi

一个接一个地执行多个actions。 要执行的actions是通过child_ids m2m(多对多)定义的。 如果sub-actions本身返回操作,则最后一个action将作为多个自己的下一个action返回给客户端

client_action

间接返回使用action_id定义的其他action。 只需将该action返回给客户端即可执行。

Evaluation context

server actions的evaluation context中包含许多键:

model

通过model_id模型对象链接到action

object,obj

仅在提供active_modelactive_id时(通过context)才可用,否则为None。 通过active_id选择的实际记录

pool

当前的数据库注册

datetime, dateutil, time

与python模块相关

cr

当前的游标

user

当前用户的记录

context

执行context

Warning

Warning异常的构造函数

Report Actions (ir.actions.report)

触发打印报告

name(mandatory)

在某种列表中查找报表时,仅用作报表的助记符/描述

model (mandatory)

report涉及的模型

report_type (mandatory)

用于PDF报告的qweb-pdf或用于HTML的qweb-html

report_name

报告的名称(将是PDF输出的名称)

groups_id

Many2many字段允许组查看/使用当前报告

paperformat_id

Many2one字段为您希望用于此报告的纸张格式(如果未指定,将使用公司格式)

attachment_use

如果设置为True,则报告仅在第一次请求时生成,并在之后从存储的报告中重新打印,而不是每次都重新生成。

可用于必须仅生成一次的报告(例如,出于法律原因)

attachment

python表达式,用于定义报告的名称; 该记录可作为变量object访问

Client Actions (ir.actions.client)

触发完全在客户端中实现的action。

tag

操作的客户端标识符,客户端应该知道如何响应的任意字符串

params (optional)

用于发送到客户端的其他数据的Python字典,以及客户端操作标记

target (optional)

是否应在主内容区域(current),全屏模式(fullscreen)或对话框/弹出窗口(new)中打开客户端action。 使用main而不是current来清除面包屑。 默认为current

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

告诉客户启动销售点界面,服务器不知道POS界面如何工作。

技术上不是M2M:添加序列字段,可以只由视图类型组成,没有视图ID。

猜你喜欢

转载自www.cnblogs.com/myt2000/p/9506138.html