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

  • 相关阅读:
    property里的参数
    property关键字的理解
    OC与C语言的几点区别
    C语言学习心得
    QQ第三方<接口>
    为什么选择Redis
    版本控制器
    url传参及重定向
    开发的四个环境
    Paxos分析
  • 原文地址:https://www.cnblogs.com/toby2chen/p/5276670.html
Copyright © 2011-2022 走看看