zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    js联系题目
    js运算符
    太极图
    第一周 Welcome
    对 vscode 自动格式化的结果不太满意,我们该如何自己调整直至自己满意为止
    ASP.NET MVC5.0 OutputCache不起效果
    对照实验(1)-批量清理系统临时文件
    ES6
    19.局部变量和全局变量
    18.函数定义和参数
  • 原文地址:https://www.cnblogs.com/myt2000/p/9506138.html
Copyright © 2011-2022 走看看