* 快捷标签
   提供快捷标签是为了简化代码的编码,把复杂的工作封装化
  
* 找到封装化的源码:
  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

(30)odoo中的快捷标签的更多相关文章

  1. (20)odoo中的action

    ---------更新时间18:06 2016-09-18 星期日15:05 2016-03-14 星期一18:07 2016-02-19 星期五---------* 窗口动作   <?xml ...

  2. (19)odoo中的javascript

    -----------更新日期15:17 2016-02-16 星期二-----------* 用到的js库   我们可以打开 addons/web/views/webclient_template. ...

  3. Odoo中的模型继承、视图继承、Qweb模板继承详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826114.html 在实际开发过程中,经常会遇到需要修改Odoo原生逻辑的情况.然而,直接修改Odoo底 ...

  4. Django自定义模型(model)中的字段标签

    方法一: 在编辑页面中,每个字段的标签都是从模块的字段名称生成的. 规则很简单: 用空格替换下划线:首字母大写.例如:Book模块中publication_date的标签是Publication da ...

  5. JAVA中的break[标签]continue[标签]用法

    原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...

  6. HTML 5 中的textarea标签

    HTML 5 中的textarea标签 定义和用法 定义一个文本区域 (text-area) (一个多行的文本输入区域).用户可在此文本区域中写文本.在一个文本区中,您可输入无限数量的文本.文本区中的 ...

  7. Python odoo中嵌入html简单的分页功能

    在odoo中,通过iframe嵌入 html,页面数据则通过controllers获取,使用jinja2模板传值渲染 html页面分页内容,这里写了判断逻辑 <!-- 分页 -->< ...

  8. Odoo中的Widget

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826144.html 一:Widget是什么 Odoo中定义了字段的显示形式,不同字段类型的字段都有其不同 ...

  9. Odoo中Qweb使用入门

    参考 可参考官网例子https://doc.odoo.com/trunk/web/qweb/或 http://thierry-godin.developpez.com/openerp/tutorial ...

随机推荐

  1. van Emda Boas

    van Emda Boas维护了一个整数集合[0,Max)(无重复),其中Max必须等于2的正整数次幂.它支持以下操作:(1)插入一个数字;(2)删除一个数字:(3)询问某一个数字在不在这个集合中:( ...

  2. 【转载】C++内存分配

    原文:C++内存分配 内存泄露相信对C++程序员来说都不陌生.解决内存泄露的方案多种多样,大部分方案以追踪检测为主,这种方法实现起来容易,使用方便,也比较安全. 首先我们要确定这个模块的主要功能: 能 ...

  3. git生成SSH key

    使用https:// 提交GitHub上的私有项目时,需要每次都输入帐号和密码,比较麻烦. 比如我自己的笔记本,在push的时候我可不想每次都输入这些. 那就使用SSH吧,这个需要在GitHub的帐号 ...

  4. [51NOD1007] 正整数分组(DP,记忆化搜索)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007 dp(id, s)表示第id个数之前,其中一个集合和为s ...

  5. form 表单

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. 折半查找&clock函数

    #include <stdio.h>#include <time.h> #define CLOCKS_PER_SEC ((clock_t)1000) int binsearch ...

  7. DIV与IDIV的用法

    DIV (unsigned divide) 无符号数除法 格式:DIV SRC 执行的操作: 字节操作:16位被除数在AX,8位除数为源操作数,结果的8位商在AL中,8位余数在AH中.表示为 (AL) ...

  8. FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术)

    FJNU 1157 Fat Brother’s ruozhi magic(胖哥的弱智术) Time Limit: 1000MS   Memory Limit: 257792K [Description ...

  9. ubuntu 16.04 安装 QQ

    需要在Ubuntu 16.04下使用QQ,查找了一下,知乎的办法可行. 参考了:http://www.zhihu.com/question/20176925 与 http://www.zhihu.co ...

  10. delegate基于on

    前几天看到事件委托的时候,关于live()方法讲的不是很详细,就去搜了一下关于live()和delegate()的,最后看源码发现bind()和delegate()都是由on()实现的,感兴趣的朋友可 ...