[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:
@@ -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" />
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user