zoukankan      html  css  js  c++  java
  • 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 该操作的下一个计划执行日期
    
  • 相关阅读:
    SQLite的使用
    Messenger类的使用
    Binder的使用(跨进程——AIDL,非跨进程)
    Android Studio中如何创建AIDL
    第二章——Parcelable接口的使用(跨进程,Intent传输)
    InetAddress的作用
    第二章——Serializable的使用(跨进程使用和Intent的传递对象)
    SurfaceView绘图机制
    双缓冲机制简介
    内部类代码
  • 原文地址:https://www.cnblogs.com/dengz/p/14582227.html
Copyright © 2011-2022 走看看