zoukankan      html  css  js  c++  java
  • (30)odoo中的快捷标签

    * 快捷标签
       提供快捷标签是为了简化代码的编码,把复杂的工作封装化
      
    * 找到封装化的源码:
      openerp/tools/convert.py   xml_import
          self._tags = {
                'record': self._tag_record,
                'delete': self._tag_delete,
                'function': self._tag_function,
                'menuitem': self._tag_menuitem,
                'template': self._tag_template,
                'workflow': self._tag_workflow,
                'report': self._tag_report,

                'ir_set': self._tag_ir_set,
                'act_window': self._tag_act_window,
                'url': self._tag_url,
                'assert': self._tag_assert,
            }
           
       可以看到系统常用到的快捷标签
        # record  对应模型 ir.model.data
        # delete 删除指定模型满足一定条件的记录
        # function 执行指定模型中方法
        # menuitem 对应模型 ir.ui.menu  定义菜单
        # template 对应模型 ir.ui.view   定义视图
        # workflow  触发工作流
        # report  对应模型 ir.actions.report.xml
        # ir_set
        # act_window 对应模型 ir.actions.act_window
        # url 对应模型 ir.actions.act_url
        # assert
       
        使用权限是 标签用 groups ,模型确用 groups_id
       
       
    * record标签是定义数据最基础的一个
          <record ...>
            <field >....</field>
              .....
          </record>   
         
    * delete
        <?xml version="1.0" encoding="utf-8"?>
        <openerp>
            <data noupdate="1">
                <delete model="ir.rule" search="[('id', '=',
                ref('todo_app.todo_task_user_rule'))]" />
               
                <record id="todo_task_per_user_rule" model="ir.rule">
                    <field name="name">ToDo Tasks only for owner</field>
                    <field name="model_id" ref="model_todo_task"/>
                    <field name="groups"
                    eval="[(4, ref('base.group_user'))]"/>
                    <field name="domain_force">
                    ['|',('user_id','in', [user.id,False]),
                    ('message_follower_ids','in',[user.partner_id.id])]
                    </field>
                </record>
            </data>
        </openerp>
        常用于规则覆盖重定义
        # model 指定要删除记录的模型
        # id 外标识id
        # search domain的表达式,定义哪些记录要删除
       
    * function
            <function
                model="res.partner"
                name="create_membership_invoice"
                eval="(ref('base.res_partner_2'),
                ref('membership_0'),
                {'amount':180})"
            />
        常用于设置示例数据
        #model:指定要用到的模型
        #name:指定模型中的方法名
        #eval: 给指定的方法把参数传过去
       
    * menuitem
        <menuitem id="menu_todo_task_stage"
            name="To-Do Stages"
            parent="menu_todo_task_main"
            sequence="20"
            groups=""
            action="action_todo_stage" />
           
        # id 菜单的唯一id用于父子级别和调用
        # name 在视图中显示的名字 如果定义的 action,这个可以省略,会用对应action
                的name值
        # sequence 显示排序
        # parent 本菜单的父菜单,子菜单都要指定,只有顶级菜单不要指定
        # action 本菜单的连接动作
        # groups 指定权限组,用户组的extraID
       
        <record id="todo_app.menu_todo_task" model="ir.ui.menu">
            <field name="name">To-Do Stages</field>
            <field name="parent">menu_todo_task_main</field>
            <field name="sequence">20</field>
            <field name="action">action_todo_stage</field>
            <field name="groups_id" ref="" />
        </record>
       
       

    * template
        <template id="assets_backend"
            inherit_id="web.assets_backend"
            name="Todo Kanban Assets" >
            <xpath expr="." position="inside">
                <link rel="stylesheet"
                href="/todo_kanban/static/src/css/todo_kanban.css"
                />
                <script type="text/javascript"
                src="/todo_kanban/static/src/js/todo_kanban.js">
                </script>
            </xpath>
        </template>
       
        <record id="assets_backend" model="ir.ui.view">
            <field name="name">Todo Kanban Assets</field>
            <field name="inherit_id">web.assets_backend</field>
            <field name="arch" type="xml">
                <xpath expr="." position="inside">
                <link rel="stylesheet"
                href="/todo_kanban/static/src/css/todo_kanban.css"
                />
                <script type="text/javascript"
                src="/todo_kanban/static/src/js/todo_kanban.js">
                </script>
            </xpath>
            </field>
        </record>
       
        template 重点指明是 Qweb引擎
       

    * workflow
        <workflow model="sale.order"
            ref="sale_order_4"
            action="order_confirm" />
        对应订单改变状态
        这个类似可以<button>
        <button name=”order_confirm” type=”workflow” states=”draft”
                    string=”确认” class=”oe_highlight” />   
           


    * report
        <report
            id="account_invoices"
            model="account.invoice"
            string="Invoices"
            report_type="qweb-pdf"
            name="account.report_invoice"
            file="account.report_invoice"
            attachment_use="True"
            attachment="(object.state in ('open','paid')) and
            ('INV'+(object.number or '').replace('/','')+'.pdf')"
        />
        #name 显示名称
        #model 响应的模型
        #report_type 报表类型 有 ('qweb-pdf', 'PDF'),
                        ('qweb-html', 'HTML'),
                        ('controller', 'Controller'),
                        ('pdf', 'RML pdf (deprecated)'),
                        ('sxw', 'RML sxw (deprecated)'),
                        ('webkit', 'Webkit (deprecated)'),
        #report_name 要用的报表模板
        #groups 权限组
        #attachment_use (bool)第二次打开还是前一次打开的结果
        #attachment 附件的名称
        
        <record id="account_invoices"
            model="ir.actions.report.xml">
            <field name="name">account.report_invoice</field>
            <field name="model">todo.task</field>
            <field name="report_type">qweb-pdf</field>
            <field name="attachment_use">true</field>
            <field name="attachment">(object.state in ('open','paid')) and
            ('INV'+(object.number or '').replace('/','')+'.pdf'</field>
        </record>
       

    * ir_set

    * act_window
        <act_window id="action_todo_stage"
            name="To-Do Task Stages"
            res_model="todo.task.stage"
            view_mode="tree,form" />
       
        # name 显示的标题
        # view_id 中的 ref 值是对应视图对象的id 触发时用哪个视图
        # context 设置目标视图的上下文
        # domain 过滤记录按条件,如:[["customer", "=", true]]
        # res_id: 当动作打开视图是表单视图时,要指定的加载记录id,只有‘view_mode’ 值为 form时才有效
                  否则就会新建一个记录 如:"res_id": a_product_id,
        # res_model 动作响应的目标模型
        # target 如果设置为new 就打开新窗口,默认是 current
        # view_mode:列出允许使用的视图模式 如 form, tree, calendar,etc 默认是 tree,form
        # view_type:设定tree时的列表是树状还是普通列表, tree-树状   form-普通列表 缺省是form
        # usage: 过滤菜单和动作
        # view_ids:
        # views:是(view_id,view_type) 元组对列表,第一组是动作默认打开的视图
                如:"views": [[False, "tree"], [False, "form"]]
        # limit 指列表视图时,一页的记录数,默认是80
        # auto_refresh: 在视图中添加一个刷新功能
        # groups:权限组
        # search_view_id 指定响应的搜索视图(id,name) 元组对
        # filter:列表视图显示过滤器(bool)   
        # auto_search: 加载默认视图后,自动搜索
        # src_model 指定可以启动视图的更多按钮
        # multi 设为True, 更多按钮显示在列表视图,否则显示在表单视图
       
        <record model="ir.actions.act_window" id="action_todo_stage">
            <field name="name">To-Do Task Stages</field>
            <field name="res_model">todo.task.stage</field>
            <field name="view_mode">tree,form</field>
        </record>
           

    * url
        <url
            "string":"Back Home",
            "url": "http://",
            "target": "self" />
           
         # string: 显示名称
         # url:网址
         # target: new 新开  self 本窗口
       
        <record model="ir.actions.act_url" id="test_home">
            <field name="name">Back Home</field>
            <field name="type">ir.actions.act_url</field>
            <field name="url">http://</field>
            <field name="target">self</field>
        </record>
     

    * assert

  • 相关阅读:
    poj 3280 Cheapest Palindrome(区间DP)
    POJ 2392 Space Elevator(多重背包)
    HDU 1285 定比赛名次(拓扑排序)
    HDU 2680 Choose the best route(最短路)
    hdu 2899 Strange fuction (三分)
    HDU 4540 威威猫系列故事――打地鼠(DP)
    HDU 3485 Count 101(递推)
    POJ 1315 Don't Get Rooked(dfs)
    脱离eclipse,手动写一个servlet
    解析xml,几种方式
  • 原文地址:https://www.cnblogs.com/toby2chen/p/5276670.html
Copyright © 2011-2022 走看看