openerp创建动态视图-fields_view_get

openerp的视图结构是以XML的格式存放于ir.ui.view表中,属于静态格式,设计之后就固定,

但可以通过在model中重写fields_view_get函数,在视图加载时修改arch属性,动态修改视图的结构

def fields_view_get(self, cr, uid, view_id=None,view_type=‘form‘,context=None,toolbar=False,submenu=False):
        ip_obj = self.pool.get(‘hr.rule.input‘)
        res = super(hr_inputs_editor,self).fields_view_get(cr,uid,view_id,view_type,context,toolbar,submenu)
        if view_type==‘form‘:
            treev = res[‘fields‘][‘line_ids‘][‘views‘][‘tree‘]
            doc = etree.XML(treev[‘arch‘])
            for node in doc.xpath("/tree/field"):
                name = node.get(‘name‘,False)
                if name.startswith(‘value‘):
                    name = name.replace(‘value‘,‘input‘) + ‘_code‘
                    cd = context.has_key(name) and context[name] or False
                    if cd:
                        ip_ids = ip_obj.search(cr,uid,[(‘code‘,‘=‘,cd)],limit=1,context=context)
                        if ip_ids:
                            text = ip_obj.read(cr,uid,ip_ids,[‘name‘])[0][‘name‘]
                            node.set(‘string‘,text)
                    else:
                        node.set(‘modifiers‘,‘{"tree_invisible":true}‘)
            treev[‘arch‘] = etree.tostring(doc)
        return res

注意,必须是通过etree将res[‘arch‘]加载到DOM中,通过xpath查找并set修改属性,然后将修改后的dom通过etree.tostring(doc)写回res[‘arch‘]

如果要修改一对多字段下的子视图时,需要先运算到子视图,如:

treev = res[‘fields‘][‘line_ids‘][‘views‘][‘tree‘]

openerp创建动态视图-fields_view_get,布布扣,bubuko.com

时间: 2024-12-17 02:09:44

openerp创建动态视图-fields_view_get的相关文章

OPENERP 构建动态视图

来自:http://shine-it.net/index.php/topic,16142.0.html 在openerp展示界面通常是通过定义class的view(xml文件)来实现的. 有时这种方法不能支持用户自定义字段的需求,于是就可以通过重写fields_view_get(). read()来实现. 实例代码 # -*- coding: utf-8 -*- from openerp.osv import osv,fields from lxml import etree from open

创建动态视图

http://www.cbf107.com/CBF107Item.aspx?ID=79c98c3e-aea2-46f9-baa7-1ccd067e2a81 SQLServer2005 Pivot 转置使用动态列(应用到视图) SQLServer2005 Pivot 转置使用动态列(应用到视图) 最近项目中用到Pivot 对表进行转置,遇到一些问题,主要是Pivot 转置的时候没有办法动态产生转置列名,而作视图的时候又很需要动态的产生这些列,百度上似乎也没有找的很满意的答案,在google上搜到一

【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI

注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 5: Creating a Dynamic UI with Knockout.js 第5部分:用Knockout.js创建动态UI 本文引自:http://www.asp.net/web-api/overview/creating-web-apis/using-web-api-with-entity-framework/using-web-api-with-entity-fra

Oracle 参数文件、v$parameter动态视图、OMF特性、启动

PFILE与SPFILE 1.  含义:PFILE是parameterfile的缩写,SPFILE是server parameter file的缩写,通过全称的字面含义,我们可以得到pfile和spfile都是oracle提供的参数文件,里面写着各种参数的初始值,比如Database Buffer的值为196M等,文件后缀名都是.ora: 2.  区别:spfile是oracle9i release2引进的新事物,在这之前oracle中只有pfile的概念.Pfile是一种静态参数文件,可以通过

Oracle 10g通过创建物化视图实现不同数据库间表级别的数据同步

摘自:http://blog.csdn.net/javaee_sunny/article/details/53439980 目录(?)[-] Oracle 10g 物化视图语法如下 实例演示 主要步骤 在A节点创建原表和物化视图日志 在B节点创建连接A节点的远程链接 在B节点处创建目标表和与目标表名称相同的物化视图 在B节点处刷新物化视图 升级采用存储过程定时任务JOB方式定时刷新物化视图 进一步优化 文章更新记录 参考文章 Oracle 10g 物化视图语法如下: create materia

创建界面视图的流程

1,创建主窗体 在内存中实例化JFrame对象 通过使用setSize(),setBounds()或者pack()方法给JFrame设置大小 通过使用setTitle()设置标题,setDefaultCloseOperation()设置关闭策略,setLocationRelativeTo()设置主窗体的位置 通过使用setVisible(true)设置组件对象可见 2,设置布局管理器 通过setLayout()设置布局管理器 通过add()语句添加各种组件到布局管理器中 创建界面视图的流程,布布

oracle动态视图v$,v_$,gv$,gv_$与x$之间的关系

前言:在oracle运维的过程中,经常会使用到一些以V$开头的动态视图,比如V$session, 有一次偶然看到有人用V_$session, 初以为别人写错了,没想到desc v_$session以后能看到和v$session一样的结构,再以后又发现以gv$开头的视图等等.趁这次在一台Linux系统上装oracle的机会,终于弄清楚了这些动态视图与相应表之间的关系.这些都是由oracle自己管理的数据结构,得从v$fixed_table入手:[[email protected] admin]$

cxf 创建动态webService

D:\developTools\apache-cxf-2.5.2\samples\wsdl_first_dynamic_client CXF 方法 cxf方法 serviceInfo.getBindings() BindingInfo--[BindingInfo http://schemas.xmlsoap.org/wsdl/soap/] serviceInfo.getDocumentation() WS_0917_05 package com.test; import java.beans.P

Cocos2d-X 使用CCTableView创建滚动视图

CCTableView和CCScrollView一样用于创建滚动视图,CCTableView的功能也比较多,创建比较麻烦 实例1:使用CCTableView创建滚动视图 首先创建一个TableView类 TableView.h中的代码 #ifndef __TableView_H__ #define __TableView_H__ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_