odoo12 Actions 翻译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41317565/article/details/86641204


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

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

type
当前操作的类别,确定可以使用哪些字段以及如何解释操作
name
用户可读的简短操作描述,可能会显示在客户端的界面中
客户可以获得4种形式的行动:

False
如果当前打开任何操作对话框,请将其关闭
一个字符串
如果客户端操作匹配,则将其解释为客户端操作的标记,否则将其视为数字
一个号码
从数据库中读取相应的动作记录,可以是数据库标识符或外部id
一本字典
作为客户端操作描述符处理并执行

窗口动作(ir.actions.act_window)

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

它的领域是:

res_model
模型来呈现视图
views
对列表(view_id, view_type)。每对的第二个元素是视图的类别(树,表单,图形,…),第一个是可选的数据库ID(或False)。如果未提供id,则客户端应获取所请求模型的指定类型的默认视图(这将自动完成 fields_view_get())。列表的第一种类型是默认视图类型,默认情况下将在执行操作时打开。每个视图类型在列表中最多只能出现一次
res_id (可选的)
如果是默认视图form,则指定要加载的记录(否则应创建新记录)
search_view_id (可选的)
(id, name)pair,id是要为操作加载的特定搜索视图的数据库标识符。默认为获取模型的默认搜索视图
target (可选的)
是否应在主内容区域(current),全屏模式(fullscreen)或对话框/弹出窗口(new)中打开视图。使用 main而不是current清除面包屑。默认为 current。
context (可选的)
要传递给视图的其他上下文数据
domain (可选的)
过滤域以隐式添加到所有视图搜索查询
limit (可选的)
默认情况下列表中显示的记录数。Web客户端中默认为80
auto_search (可选的)
是否应在加载默认视图后立即执行搜索。默认为True
例如,要customer使用列表和表单视图打开客户(带有标志集的伙伴):

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

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

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

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

view_mode
以逗号分隔的视图类型列表作为字符串。所有这些类型都将出现在生成的views列表中(至少有一个Falseview_id)
view_ids
M2M 1查看对象,定义初始内容 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)

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

url
激活操作时打开的地址
target
如果new将当前内容替换为页面if ,则在新窗口/页面中打开地址self。默认为new

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

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

Server 动作 (ir.actions.server)

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

id
要运行的服务器操作的数据库内标识符
context (可选的)
运行服务器操作时要使用的上下文数据
数据库内记录非常丰富,可以根据它们执行许多特定或一般的操作state。某些字段(和相应的行为)在状态之间共享:

model_id
Odoo模型与行动相关联,在 评估环境中提供
condition (可选的)
使用服务器操作的评估上下文评估为Python代码 。如果 False,阻止该操作运行。默认:True
有效的操作类型(state字段)是可扩展的,默认类型是:

code

默认且最灵活的服务器操作类型,使用操作的评估上下文执行任意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.fields 设置在隐含的模型中 use_create
value
字段的值,通过解释 type
type
如果value,该value字段被解释为文字值(可能已转换),如果equation该value字段被解释为Python表达式并进行评估
crud_model_id
用于创建新记录的模型,如果use_create设置为 new_other
ref_object
Reference要复制的任意记录,如果use_create设置为,则使用 copy_other
link_new_record
boolean flag通过指定的many2one字段将新创建的记录链接到当前记录link_field_id,默认为False
link_field_id
many2one to ir.model.fields,指定应在其上设置新创建记录的当前记录的m2o字段(模型应匹配)

object_write

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

use_write
写政策,其中一个:

current
写入当前记录
other
写入通过crud_model_id和 选择的其他记录ref_object
expression
写入crud_model_id 通过评估选择其模型的其他记录,并通过评估选择其IDwrite_expression
write_expression
Python表达式返回记录或对象id,use_write设置为时使用 expression以决定应修改哪条记录
fields_lines
请参阅object_create
crud_model_id
请参阅object_create
ref_object
请参阅object_create

multi

一个接一个地执行多个动作。要执行的操作是通过child_idsm2m 定义的。如果子操作本身返回操作,则最后一个操作将作为多个自己的下一个操作返回给客户端

client_action

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

评估背景

服务器操作的评估上下文中包含许多键:

model
链接到动作的模型对象 model_id
object, obj
仅当active_model与active_id被提供(通过上下文)否则None。选择的实际记录active_id
pool
当前的数据库注册表
datetime,dateutil,time
相应的Python模块
cr
当前的光标
user
当前的用户记录
context
执行上下文
Warning
Warning异常的构造函数

Report 动作 (ir.actions.report)

触发打印报告

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

Client 动作 (ir.actions.client)

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

tag
操作的客户端标识符,客户端应该知道如何响应的任意字符串
params (可选的)
用于发送到客户端的其他数据的Python字典,以及客户端操作标记
target (可选的)
是否应在主内容区域(current),全屏模式(fullscreen)或对话框/弹出窗口(new)中打开客户端操作。使用main而不是current清除面包屑。默认为current。

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

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

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

猜你喜欢

转载自blog.csdn.net/weixin_41317565/article/details/86641204