2013-08-27 47 views
0

我知道使用「只讀」屬性只能讀取一個字段。是否可以只讀取整個記錄?這意味着一個表單中的所有字段都應該在條件下只讀。如何在openerp7中只讀取整個記錄

一個微不足道的方式,我發現是使這一ATTRS = 「{ '只讀':[( '州', '=', '關閉')]}」中存在的所有形式的Fileds。

<field name="responsible_id" class="oe_inline" attrs="{'readonly': 
<field name="type" attrs="{ 'readonly':[('state','=','close')]}" class="oe_inline"/> 
<field name="send_response" attrs="{'readonly':[('state','=','close')]}"/>[('state','=','close')]}"/> 

但是,我不認爲這是正確的。我希望有某種方式可以使只讀屬性通用於表單。請建議。

在我的示例中,人們可以查看所有記錄並僅編輯自己的記錄。

謝謝。

回答

0

在整個表單上放置一個組,並使用attrs使其只能讀取。

+0

我很抱歉,你能給我一個代碼片段。謝謝 – Vivek

+0

' Parthiv

1

把這個在你的Python進口:

from lxml import etree 
from openerp.osv.orm import setup_modifiers 

並修改字段的fields_view_get方法是這樣的:

def fields_view_get(self, cr, uid, view_id=None, view_type=None, context=None, toolbar=False, submenu=False): 

    res = super(MyClass, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, 
                 context=context, toolbar=toolbar, submenu=submenu) 

    if view_type == 'form': 
     # Set all fields read only when state is close. 
     doc = etree.XML(res['arch']) 
     for node in doc.xpath("//field"): 
      node.set('attrs', "{'readonly': [('state', '=', 'close')]}") 
      node_name = node.get('name') 
      setup_modifiers(node, res['fields'][node_name]) 

     res['arch'] = etree.tostring(doc) 

    return res 

這將修改表單上的每個字段包括attrs="{'readonly':[('state','=','close')]}"屬性。