[IMP] Add the support for the override of any attribute.

You can override an attribute of an xml view with the <attribute /> tag

Example:
<openerp>
    <data>
        <record model="ir.ui.view" id="res_partner_form">
            <field name="name">res.partner.form</field>
            <field name="model">res.partner</field>
            <field name="type">form</field>
            <field name="inherit_id" ref="base.view_partner_form" />
            <field name="arch" type="xml">
                <xpath expr="/form/notebook/page[@string='General']/field[@name='address']/tree" position="attributes">
                    <attribute name="editable">top</attribute>
                </xpath>
            </field>
        </record>
    </data>
</openerp>

Regards,

bzr revid: stephane@openerp.com-20091124091543-wsxu48hx117e0w6h
This commit is contained in:
Stephane Wirtel
2009-11-24 10:15:43 +01:00
parent fc896c18e1
commit e56a3b5a70
2 changed files with 23 additions and 0 deletions
+16
View File
@@ -20,6 +20,7 @@
<rng:ref name="image"/>
<rng:ref name="form"/>
<rng:ref name="vpaned"/>
<rng:ref name="attribute"/>
<rng:ref name="filter"/>
<rng:element name="newline"><rng:empty/></rng:element>
<rng:element name="properties"><rng:empty/></rng:element>
@@ -48,6 +49,7 @@
<rng:ref name="tree"/>
<rng:ref name="group"/>
<rng:ref name="button"/>
<rng:ref name="attribute"/>
<rng:ref name="filter"/>
<rng:element name="newline"><rng:empty/></rng:element>
</rng:choice>
@@ -182,6 +184,7 @@
<rng:choice>
<rng:element name="newline"><rng:empty/></rng:element>
<rng:element name="properties"><rng:empty/></rng:element>
<rng:ref name="attribute" />
<rng:ref name="label" />
<rng:ref name="field"/>
<rng:ref name="group"/>
@@ -219,6 +222,7 @@
<rng:optional><rng:attribute name="orientation"/></rng:optional>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="attribute"/>
<rng:ref name="separator"/>
<rng:ref name="button"/>
<rng:ref name="field"/>
@@ -265,6 +269,15 @@
</rng:element>
</rng:define>
<rng:define name="attribute">
<rng:element name="attribute">
<rng:attribute name="name" />
<rng:zeroOrMore>
<rng:text />
</rng:zeroOrMore>
</rng:element>
</rng:define>
<rng:define name="field">
<rng:element name="field">
@@ -314,6 +327,7 @@
<rng:optional><rng:attribute name="selection"/></rng:optional>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="attribute" />
<rng:ref name="form"/>
<rng:ref name="data"/>
<rng:ref name="tree"/>
@@ -348,6 +362,7 @@
<rng:optional><rng:attribute name="color" /></rng:optional>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="attribute"/>
<rng:ref name="separator"/>
<rng:ref name="button"/>
<rng:ref name="field"/>
@@ -413,6 +428,7 @@
<rng:optional><rng:attribute name="help"/></rng:optional>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="attribute" />
<rng:ref name="form" />
<rng:ref name="field" />
<rng:ref name="tree" />
+7
View File
@@ -1242,6 +1242,13 @@ class orm_template(object):
for child in node2:
node.addprevious(child)
node.getparent().remove(node)
elif pos == 'attributes':
for child in node2.getiterator('attribute'):
attribute = (child.get('name'), child.text and child.text.encode('utf8') or None)
if attribute[1]:
node.set(attribute[0], attribute[1])
else:
del(node.attrib[attribute[0]])
else:
sib = node.getnext()
for child in node2: