• Odoo 动作Action


    Odoo 动作Action

    动作Action

    # 字段:
    	type 操作的类型
    	
    	name 动作简短的名称
    	
    	binding_model_id 给动作绑定模型
    	
    	binding_type 指定绑定类型 , 动作即将出现在哪个上下文种
    		# action 指定动作将出现在 绑定模型的“动作”上下文菜单中。
    		# report  指定操作将出现在 绑定模型的“ 打印”上下文菜单中
    		
    	binding_view_types 以逗号分隔的视图类型列表,针对该视图类型的操作将在上下文中显示. 默认是'list,form'(列表和表格)
    	
    
    

    一.窗口动作

    # ir.actions..act_window
    
    # 字段
    	res_model 绑定模型
    	
    	views( view_id,view_type) (可选的数据库ID,视图的类别(树,窗体,图形等)
    		# 如果没有提供ID ,则客户端对应请求的模型获取指定类型的默认视图是由
    		 fields_view_get() 方法获得. 
    		# 列表 tree 是默认的视图类型
    		
    	res_id  可选参数,默认是视图form
    	search_view_id 可选参数  则指定要加载的记录(否则应创建一个新记录)
    	target 可选参数  , current 主区域, fullscreen 全屏 , new 新视图, main 代替current 清除面包屑导航
    	context 可选参数 上下文数据传递给视图
    	domain 可选参数  过滤域 以隐式添加到搜索视图种
    	limit 可选参数 web客户端 默认是80
    
    # 事例代码
    {
        "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",
    }
    
    # view_mode (default= tree,form )
    	# 注意:如果使用 view_ids时,请使用 ir.actions.act_window.view
    <record model="ir.actions.act_window.view" id="test_action_tree">
       <field name="sequence" eval="1"/>
       <field name="view_mode">tree</field>
       <field name="view_id" ref="view_test_tree"/>
       <field name="act_window_id" ref="test_action"/>
    </record>	
    
    # view_id 
    	绑定即将要展示的视图id
    <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>
    

    二.URL操作

    # 允许odoo操作打开URL
    # ir.actions.act_url
    # 字段:
    	url 激活动作时打开的地址
    	target new 是新窗口, self是当前页面
    
    {
        "type": "ir.actions.act_url",
        "url": "https://odoo.com",
        "target": "self",
    }
    
    

    三.服务动作

    #  ir.actions.server
    # 服务器动作模型.  服务器动作基于基本模型,提供各种类型的动作. 这些动作可自动执行.
    
    # 服务器动作可执行的动作
    	# 1. 执行python代码
    	# 2. 创建新的记录
    	# 3. 更新记录的值
    	# 4. 执行多个操作
    	# 5. 允许从任何有效的操作位置触发复杂的服务器代码,至于两个字段相关
    		# id 运行服务器动作的数据库内标识符
    		# context 可选参数,运行服务器操作时,使用的上下文数据
    		# model_id Odoo模型链接到的动作
    		# state 
    			# code 执行code参数指定的python代码
    			# object_create :crud_model_id 根据fields_lines 规格创建新的模型记录
    			# object_write : 按照一下fields_lines 规范更新当前记录
    			# multi : 执行通过child_ids 参数给出的服务器操作
    
    
    # State  状态栏 (5种模式)
    	# 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="state">code</field>
                <field name="code">
                    raise Warning(record.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="state">code</field>
                <field name="code">
                    if record.some_condition():
                        action = {
                            "type": "ir.actions.act_window",
                            "view_mode": "form",
                            "res_model": record._name,
                            "res_id": record.id,
                        }
                </field>
            </record>
    
    
    	# crud_model_id 
    		创建新记录的模型 必填
    		
    	# link_field_id
    		创造
    		many2one ir.model.fields  , 指定应在其上设置新创建记录的m2o字段
    	# fields_lines 
    		创建/写入 , 创建或复制记录字段时覆盖的字段. one2many字段
    		# cool  ir.model.fields在相关模型中设置(crud_model_id用于创建,model_id用于更新)
    		# value 字段的值,通过 type
    		# type type (值|参考|等式)
    如果为value,则将该value字段解释为文字值(可能会转换),如果equation将该value字段解释为Python表达式并求值
    	
    	# child_ids
        指定ir.actions.server要在状态multi中执行的多个子操作()。如果子操作本身返回操作,则最后一个操作将作为多重操作自身的下一个操作返回给客户端
    

    四.报告动作

    # 触发报告的打印
    # ir.actions.report
    	
    # 字段 
    	name  必填参数 
    	model 必填参数  报告使用到的模型
    	report_type  默认是qweb-pdf , qweb-html
    	report_name 必填 报告名称
    	
        groups_id  Many2many 字段允许查看/使用当前报告的组
        multi  设置为True,则将不会显示在表单视图上
        paperformat_id  Many2one 纸张格式的字段
        attachment_use  设置True时,第一次请求时才生成报告,从存储的报告中重新打印,不是每次都生成新的报告
        attachment 定义报告的名称
    
    <!-- used from POS UI, no need to be in print menu -->
    <record id="pos_invoice_report" model="ir.actions.report">
            <field name="name">Invoice</field>
            <field name="model">pos.order</field>
            <field name="report_type">qweb-pdf</field>
            <field name="report_name">point_of_sale.report_invoice</field>
            <field name="print_report_name">'Invoice - %s' % (object.name)</field>
    </record>
    

    五.客户动作

    # ir.actions.client
    # 在客户端种触发的操作
    
    # 字段 
    	tag 操作客户端的标识符,客户端知道之后做出反应的字符串
    	params 可选字段, Python字典,包含要发送到客户端的其他数据以及客户端操作标签
    	target 可选参数 current 主要内容区域, fullscreen 全屏, new 弹窗,对话框,   main 代替current 清楚面包屑. 默认是current
    	
    {
        "type": "ir.actions.client",
        "tag": "pos.ui"
    }
    

    六.自动动作

    # ir.cron 
    # 以预定频率自动触发的动作
    
    # 字段
    	name  自动操作的名称
    	interval_number 两次执行动作之间的 interval_type uom (次数)
    	numbercall  必须执行此操作的次数,如果希望无限运行,设置为-1
    	doall 布尔值, 在服务器重新启动时,是否必须执行错过的操作
    	model_id  调用此动作的模型
    	code 动作的代码内容 , 如:
    		model.<method_name>()
    	nextcall 该操作的下一个计划执行日期
    
  • 相关阅读:
    第二十九课 循环链表的实现
    第二十八课 再论智能指针(下)
    第二十七课 再论智能指针(上)
    第二十六课 典型问题分析(Bugfix)
    普通new和placement new的重载
    leetcode 581. Shortest Unsorted Continuous Subarray
    leetcode 605. Can Place Flowers
    leetcode 219. Contains Duplicate II
    leetcode 283. Move Zeroes
    leetcode 217. Contains Duplicate
  • 原文地址:https://www.cnblogs.com/dengz/p/14582227.html
Copyright © 2020-2023  润新知