首页 > 其他分享 >Odoo 页面-‘action’-官方文档解释

Odoo 页面-‘action’-官方文档解释

时间:2023-10-02 13:35:20浏览次数:39  
标签:ir 视图 文档 默认 Odoo action actions id view

1、图示总概览-动作分类
窗口动作(Window Actions) ------(ir.actions.act_window)
网址URL动作(URL Actions) ------(ir.actions.act_url)
服务器动作(Server Actions)------ (ir.actions.server)
报告动作(Report Actions)------ (ir.actions.report.xml)
客户动作(Client Actions)------ (ir.actions.client)

 

2、官方文档
动作可以存储在数据库中,也可以直接作为字典返回,例如按钮方法。所有操作都有两个强制性属性:
type

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

操作的简短用户可读描述,可以显示在客户端的界面中
客户端可以通过 4 种形式获取操作:
False

如果当前打开了任何操作对话框,请将其关闭
一个字符串

如果客户端操作匹配,则解释为客户端操作的标记,否则视为数字
一个号码

从数据库中读取对应的动作记录,可以是数据库标识符,也可以是外部id
一本字典

视为客户端操作描述符并执行
窗口动作Window Actions (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清除breadcrumbs。默认为 current.
context(可选的)

要传递给视图的附加上下文数据
domain(可选的)

过滤域以隐式添加到所有视图搜索查询
limit(可选的)

默认情况下要在列表中显示的记录数。在 Web 客户端中默认为 80
auto_search(可选的)

是否应在加载默认视图后立即执行搜索。默认为True
例如,使用列表和表单视图打开客户(设置了客户标志的合作伙伴):

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

M2 M1查看对象,定义views初始内容
view_id

添加到视图列表中的特定视图,以防其类型是 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)
需求实例:
方法1:弹窗然后确认方法

    <record id="wizard_batch_handle_record_so_form_view" model="ir.ui.view">
        <field name="name">Batch Handle Record Wizard For S.O. Form View</field>
        <field name="model">wizard.batch.handle.so</field>
        <field name="type">form</field>
        <field name="arch" type="xml">
            <form string="Batch Handle Sale Order">
                <div>
                    <h4>Test one</h4>
                    <h5 style="color:red">Please make sure your approve flow is all auto approve and check your sale order correct</h5>
                </div>
                <footer>
                    <button name="**此处为想要执行的方法**" string="Confirm" type="object" class="btn-primary"/>
                    <button string="Cancel" class="btn-default" special="cancel"/>
                </footer>
            </form>
        </field>
    </record>

    <act_window id="act_wizard_batch_handle_so_record"
                name="Batch Handle Sale Order"
                res_model="wizard.batch.handle.so"   ============>跳转的wizard瞬态模型
                src_model="sale.order"  						=============>动作所在的模型
                multi="True"
                key2="client_action_multi"
                target="new"
                view_type="form"
                view_mode="form"
                groups="rh_sale.group_batch_handle_sale_order"/>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 	    <record id="view_badge_wizard_reward" model="ir.ui.view">
            <field name="name">gamification.badge.user.wizard.form</field>
            <field name="model">gamification.badge.user.wizard</field>
            <field name="arch" type="xml">
                <form string="Reward Employee with">
                    What are you thankful for?
                    <group>
                        <field name="employee_id" invisible="1" />
                        <field name="user_id" invisible="1" />
                        <field name="badge_id" nolabel="1" colspan="4" />
                        <field name="comment" nolabel="1" placeholder="Describe what they did and why it matters (will be public)" />
                    </group>
                    <footer>
                        <button string="Reward Employee" type="object" name="action_grant_badge" class="btn-primary" />
                        <button string="Cancel" special="cancel" class="btn-default"/>
                    </footer>
                </form>
            </field>
        </record>

        <act_window id="action_reward_wizard" domain="[]"
            name="Reward Employee"
            target="new"
            res_model="gamification.badge.user.wizard"      ============>跳转的wizard瞬态模型(需要在view里显示数据的model)
            context="{'default_employee_id': active_id, 'employee_id': active_id}"
            view_type="form" view_mode="form"
            view_id="view_badge_wizard_reward"/>           ======># 数据库视图记录id或False,如果没有指定id,客户端会自动用fields_view_get()获取相应类型的默认视图。(也有指定view_id的)

  

方法2:直接执行方法

    <record id="***ID***" model="ir.actions.server">
        <field name="name">Terminate Routine Inspection Tasks In Batches</field>
        <field name="type">ir.actions.server</field>
        <field name="model_id" ref="模块名称.model_模型名称"/>
        <field name="state">code</field>
        <field name="code">
            if records:
            action = records.方法名()
        </field>
    </record>

    <record id="action_terminate_routine_inspection_tasks_in_batches" model="ir.values">
        <field name="name">Terminate Routine Inspection Tasks In Batches</field>
        <field name="model_id" ref="模块名称.model_模型名称"/>
        <field name="model">页面动作所属模型</field>
        <field name="key2">client_action_multi</field>
        <field eval="'ir.actions.server,%d'%***ID***" name="value"/>
    </record>

  

网址URL动作 URL Actions (ir.actions.act_url)
允许通过 Odoo 操作打开 URL(网站/网页)。可以通过两个字段进行自定义:

url

激活动作时打开的地址
target

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

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

  

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

   

标签:ir,视图,文档,默认,Odoo,action,actions,id,view
From: https://www.cnblogs.com/pythonClub/p/17739872.html

相关文章

  • How Does RPC & ORM Calls Works in Odoo 16
    HowRPCWorksinOdooFramework:*Odooisanopen-sourceERP(EnterpriseResourcePlanning)frameworkthatprovidesavastrangeofbusinessapplicationfunctionalities.Itfollowsaclient-serverarchitecture,wheretheclientinteractswiththeservert......
  • 大华城市安防监控系统平台管理 attachment_downloadByUrlAtt.action 任意文件下载漏洞
    漏洞简介大华城市安防监控系统平台管理存在任意文件下载漏洞,攻击者通过漏洞可以下载服务器上的任意文件漏洞复现fofa语法:app="dahua-DSS"登录页面如下:POC:/portal/attachment_downloadByUrlAtt.action?filePath=file:///etc/passwdnuclei批量yaml文件id:dahua_DSS_attach......
  • ES - RestClient 查询文档
    目录快速入门快速入门@SpringBootTestclassSearchfDocTest{privateRestHighLevelClientclient;//查询所有文档@TestpublicvoidtestMatchAll()throwsIOException{//1.准备请求对象SearchRequestsearchRequest=newSearc......
  • layuiAdmin pro v1.x 【单页版】开发者文档
    layuiAdminstdv1.x【iframe版】开发者文档题外该文档适用于layuiAdmin专业版(单页面),阅读之前请务必确认是否与你使用的版本对应。熟练掌握layuiAdmin的前提是熟练掌握layui,因此除了本篇文档,layui的文档也是必不可少的存在。看云上的文档快速上手部署解压文件......
  • ShowDoc部署与应用:文档管理的最佳实践
    在项目开发和协作中,文档管理扮演着至关重要的角色。ShowDoc作为一款卓越的开源文档管理工具,不仅提供强大的文档管理功能,还具备简单易用的协作和部署特性。我们的项目团队最初选择了ShowDoc作为文档管理工具,用以促进前后端协作。在本文中,我们将深入探讨ShowDoc,并为您演示如何轻松部......
  • lesson8 输入框监控听 TestTextFieldActionEvent
       packagecom.zym.lesson8;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.WindowAdapter;importjava.awt.event.WindowEvent;publicclassTestTextFieldActionEvent{publicstatic......
  • PostgreSQL数据库事务系统——获取virtual transaction id
    如果一个事务没有进行INSERT、UPDATE、DELETE操作,那么就步会分配事务ID,但事务仍然用一个虚拟事务ID代表自己。虚拟事务ID由两部分组成,第一部分是BackendID,另一个是每个会话自己维护的本地事务ID计数器。通过两部分组合,能保证这个虚拟事务ID的唯一性。在PostgreSQL数据库IPC——SI......
  • python代码转成php代码的工具 或者go转成php的代码,想把odoo改成成php swoole当成web服
    目前市场上有一些可以将Python代码转换为PHP代码的工具,例如:Transcrypt:Transcrypt是一个将Python代码转换为JavaScript和PHP的工具。它可以将Python代码转换为相应的PHP代码,并保持语法和结构的一致性。Pythran:Pythran是一个专门用于加速Python代码执行的工具,但它也提供了将Python代......
  • doc和docx文档有什么区别
    1、版本不同.doc是word2003以及之前word保存类型;.docx则是Word2007之后(如2010、2013、2016等)版本的保存类型。2、压缩文件格式不同.doc是传统的XML压缩文件格式。.docx是基于新的XML压缩文件格式;3、占用空间不同同样文档内容,docx对比doc而言,可以节省大量的空间4、访问速......
  • 易游平台的设计与实现-计算机毕业设计源码+LW文档
    1选题的意义和研究现状1.1选题的意义目前各行各业都在运用网络信息管理程序,不同的人群也都接触到信息管理,特别是在各大企业行业广泛的应运起来。通过对当前网络环境发展的分析与总结,开发易游平台的设计可以改变以往的易游平台的设计方式,改变传统线下易游平台的设计发展到无纸化的......