1. 程式人生 > >openerp建立動態檢視-fields_view_get

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

openerp的檢視結構是以XML的格式存放於ir.ui.view表中,屬於靜態格式,設計之後就固定, 但可以通過在model中重寫fields_view_get函式,在檢視載入時修改arch屬性,動態修改檢視的結構 def fields_view_get(self, cr

Android動態建立ListView檢視動態增加和刪除Item.

package com.example.mycustomview; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import android.app.Activity

如何建立動態選單在ASP。 淨核心剃刀頁面與Web Api

我得到一個錯誤當我新增一個MenuList進入選單。 電腦科學,因為我的MySql表中沒有MenuList那裡。 但我無法新增MenuList選單。 cs,這意味著我不能建立一個動態選單,任何人在這種情況下有解決方案嗎? 請幫助我,我被困在這裡大約一個星期。 MySql表: CREATE TABLE Me

Maven安裝配置三:建立動態web專案

需求表均同springmvc案例 此處只是使用maven 注意,以下所有需要建立在你的eclipse等已經整合配置好了maven了,說白了就是新建專案的時候已經可以找到maven了 沒有的話需要安裝maven 1.新建maven專案,如果不在上面,請到other裡面去找一下 2,進入m

WPF 定時器DispatcherTimer+GetCursorPos 的使用,動態檢視螢幕上任一點座標

原文: WPF 定時器DispatcherTimer+GetCursorPos 的使用,動態檢視螢幕上任一點座標 using  System; using  System.Collections.Generic; using  System

建立索引檢視時提示架構繫結無效,名稱必須由兩部分構成

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

建立霧化檢視

CREATE MATERIALIZED VIEW 霧化檢視名稱 REFRESH  FAST START WITH SYSDATE NEST SYSDATE+1/48 AS SELECT * FROM 資料來源名稱@dblink名稱 首先目的資料庫中需要建立連結源資料庫的dblink 

Microbiome:在人工腸道中建立動態線性模型指導設計和分析微生物組研究

文章目錄 在人工腸道中建立動態線性模型指導設計和分析微生物組研究 導讀 摘要 主要結果 圖1. 技術變異掩蓋了微生物動態的模型 圖2. 10個最高丰度細菌科隨時間變化 圖3. 生物和技術變異的結

建立動態列表

<input type="button" value="點選" id="btn"/><div id="dv"></div><script src="commer.js"></script><script> var kungfu=["

20181130linux中動態檢視程序 top

動態檢視程序 top [[email protected] ~]# top 延時間隔預設是3秒鐘[[email protected] ~]# top -d 1[[email protected] ~]# top -d 1 -p 10126 檢視指定程序的動態資訊[[email&

MySQL5.7 建立檢視資料庫

1.建立資料庫語句create database語句是在MySQL例項上建立一個指定名稱的資料庫。create schema語句的語義和create database是一樣的。 2.語法解析 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [creat

SqlServer索引的建立檢視、刪除

1、索引的建立 #1使用企業管理器建立 啟動企業管理器–選擇資料庫------選在要建立索引的表------在表的下拉選單中選擇索引—在快捷選單中選擇新建索引– 在新建索引對話方塊中單擊“新增”按鈕,彈出“從列表中選擇列”,在該對話方塊中選擇要新增到索引鍵的表列 單擊確定返回

Linux下建立檢視、提取和修改靜態庫(*.a)

先說明一點,靜態庫檔案是由多個目標檔案打包而成的,在windows下靜態庫檔案的字尾是.lib,而在linux下靜態庫檔案的字尾是.a(a是archive的縮寫,也就是文件檔案)。   廢話少說,下面直接進入主題。   1.建立兩個c檔案:addition.c 和 mul

Elasticsearch索引的建立檢視及修改

mapping的寫入與檢視    使用elasticsearch儲存資料之前建立索引非常關鍵,一個好的索引使後續業務的查詢更加方便快捷,我們建立索引時如果不指定相關資訊,會按照預設設定建立,如果我們想要更加強大的功能,比如中文檢索、拼音檢索、首拼檢索,就需要我們自己規劃索引

建立動態的sql語句

舉個栗子: 資料庫有個staff表,表結構為: id name age 插入資料庫的資料: id='001' name='mike' age=20 構造一個動態變化的字典: data={ 'id':'001', 'name':'mike', 'a

Cglib之Enhancer建立動態代理

CGLIB是一個強大、高效能的位元組碼生成庫,它用於在執行時擴充套件Java類和實現介面;本質上它是通過動態的生成一個子類去覆蓋所要代理的類(非final修飾的類和方法)。Enhancer是一個非常重要的類,它允許為非介面型別建立一個JAVA代理,Enhance

【 Linux 】建立檢視、刪除檔案

目錄 建立並檢視 單個刪除 從小白開始,記錄每一次遇到的問題,然後整理出來,我相信剛接觸Linux的人多多少少也會遇到類似的問題,如果看到了我的部落格,也是一種緣分。 今天想記錄下如何建立,檢視,以及刪除一個檔案。 建立並檢視 首先看看最普通的辦法,純粹使

ORACLE資料庫建立動態

最近公司一個專案程式碼裡的定時任務無法執行,查驗程式碼良久,奈何程式碼過於老舊,開發人員換了一茬又一茬,現在都無法理清,故無奈只好到資料庫裡重新寫存過,配置定時任務。 在寫存過時,由於檢測及安全效能要求,需要備份資料,設計是每次呼叫存過時就建立一張新表記錄歷史資料,開始時是準備直接一條語句搞定: BEGIN

KVM虛擬機器快照建立檢視

[[email protected] images]# virsh snapshot-create-as icp pureOS Domain snapshot pureOS created 備註: 建立快照之前最好先關閉虛擬計算機,否則可能失敗。失敗與虛擬機器的

sql server 建立動態交叉表

我所瞭解的建立動態交叉表有兩種方法,如下圖,有這樣一張銷售表 ,我想統計個人的銷售業績,如圖二表示出來, 建立銷售表 CREATE TABLE [dbo].[銷售]( [ID] [int] NOT NULL, [員工姓名] [nvarchar](25) NULL,