zoukankan      html  css  js  c++  java
  • odoo里面的动作

    来源:Odoo中的五种action都是继承自ir.actions.actions模型实现的子类,共有五种,下面会一个一个给出具体例子

    1、链接Action(ir.actions.act_url):target:self、main、new

     def do_action_html(self):
            return {
                'type': 'ir.actions.act_url',
                'url': "http://www.baidu.com",
                'target': 'main',
                'res_id': self.id,
            }

    2、窗口action(ir.actions.act_window ):用于打开模型的各种视图

        def action_read_account(self):
            self.ensure_one()
            domain=[]
            context={}
            return {
                'name': self.display_name,
                'type': 'ir.actions.act_window',
                'view_type': 'form',
                'view_mode': 'form',
                'domain': domain,
                'context': context,
                'view_mode': 'form',
                'res_model': 'account.account',
                'res_id': self.id,
            }
     

    3、服务器Action (ir.actions.server)

     <record id="action_product_price_list_report" model="ir.actions.server">
            <field name="name">Generate Pricelist</field>
            <field name="groups_id" eval="[(4, ref('group_product_pricelist'))]"/>
            <field name="model_id" ref="product.model_product_product"/>
            <field name="binding_model_id" ref="product.model_product_product"/>
            <field name="state">code</field>
            <field name="code">
                  ctx = env.context
                  ctx.update({'default_pricelist': env['product.pricelist'].search([], limit=1).id})
                  action = {
                    'name': 'Pricelist Report',
                    'type': 'ir.actions.client',
                    'tag': 'generate_pricelist',
                    'context': ctx,
                     }
            </field>
        </record>

    4、四:客户端Actions (ir.actions.client)

                触发一个在客户端实现(即js文件中定义的函数,通过core.action_registry.add(tag,函数名) 注册到odoo中)动作

        def execute(self):
            return {
                 'type': 'ir.actions.client',
                 'tag': 'reload',
                 'params': {'wait': True}
             }

    注意:tag是对应js里面的一个action_registry

    js代码模板

    var 自定义widget名= Widget.extend({
            init:init函数;
            start:自动调用到start函数;
            其他函数,被init、start调用。//自定义widget,就是自定义动作
    })
     
    core.action_registry.add('widget tag名', widget名);
     
    return {
        widget名: widget名,
    };

    xml里面

    <record id="action_" model="ir.actions.client">
                <field name="name"></field>
                <field name="res_model"></field>
                <field name="tag">widget注册时的tag名</field>
    </record>

    5、报表渲染设置Action (ir.actions.report.xml)     此action用于在报表渲染前进行一些前置设定,如纸张大小、输出文件名等等

        

    <record id="" model="ir.actions.report.xml">
            <field name="name"></field>
            <field name="model">report.模块名.报表模型名</field>
            <field name="report_type">qweb-pdf|qweb-html</field>
            <field name="report_name">输出的报表文件名</field>
     </record>
    心有猛虎,细嗅蔷薇
  • 相关阅读:
    项目配置64位Release版,编译提示:TRACKER : 错误 TRK0005: 未能找到: “CL.exe”。系统找不到指定的文件。
    解决word表格中换行到最后一行不分页以及分页后在最后一行回车后增加一个新页页不是与其它内容共用一页
    Qt error: undefined reference to `vtable for XXX'
    C++中string转int
    U盘在linux下出现加锁解决办法
    Qt执行没崩溃,但是也不往下走,一调式出现Signal Received错误
    工具里调整视图切换新结构后调用表格的importfile会崩溃
    treectrl关联了一个右键弹出菜单,但是一执行到GetSubMenu(0)就崩溃
    java中lock和synchronized区别
    http 状态码
  • 原文地址:https://www.cnblogs.com/1314520xh/p/15240968.html
Copyright © 2011-2022 走看看