如何在openerp 7中完整地记录整个记录

时间:2013-08-27 05:14:55

标签: openerp

我知道使用“readonly”属性只读一个字段。是否可以只读取整个记录。这意味着表单中的所有字段都应该只读取条件。

我找到的一个微不足道的方法是在所有文件中使 attrs =“{'readonly':[('state','=','close')]}”形式。

<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')]}"/>

但我不认为这是正确的。我期待某种方式将readonly attribut用于表单。请建议。

在我的示例中,人们可以查看所有记录并仅编辑自己的记录。

谢谢。

2 个答案:

答案 0 :(得分:2)

将它放在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')]}"属性。

答案 1 :(得分:0)

在整个表单上放置一个组,并使用attrs将其设为只读。