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。

  • 相关阅读:
    1093 Count PAT's(25 分)
    1089 Insert or Merge(25 分)
    1088 Rational Arithmetic(20 分)
    1081 Rational Sum(20 分)
    1069 The Black Hole of Numbers(20 分)
    1059 Prime Factors(25 分)
    1050 String Subtraction (20)
    根据生日计算员工年龄
    动态获取当前日期和时间
    对计数结果进行4舍5入
  • 原文地址:https://www.cnblogs.com/myt2000/p/9506138.html
Copyright © 2011-2022 走看看