I wanted to be able to inherit a form, and actually add some fields into an 
existing page. At the moment the code only supports inserting an entire new 
page, or removing a page.

The attached patch allows this. It also allows removing fields from a view.

As an example, consider this:


<?xml version="1.0" ?>
<terp>
&nbsp; &nbsp;<data>
&nbsp; &nbsp;&nbsp; &nbsp;<record model="ir.ui.view" 
id="product_normal_form_view">
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
name="name">product.normal.form</field>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
name="model">product.product</field>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field name="inherit_id" 
ref="product.product_normal_form_view" />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field name="type">form</field>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field name="arch" type="xml">
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<page string="Information" 
position="update">
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
name="pattern_repeat" digits="&#40;3, 0&#41;" position="before" 
target="volume"/>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
name="width" digits="&#40;3, 0&#41;"/>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
target="volume" position="remove" />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
target="weight" position="remove" />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<field 
target="weight_net" position="remove" />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</page>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;</field>
&nbsp; &nbsp;&nbsp; &nbsp;</record>
&nbsp; &nbsp;</data>
</terp>




This will update the 'Information' page of product_normal_form_view:

- add a new field 'pattern_repeat' before 'volume'
- add a new field 'width' after that
- remove the fields 'volume', 'weight' and 'weight_net'

I know it is a bit odd, but I hope someone finds it useful! It seems to me that 
it is useful to be able to have a module which removes fields from the standard 
view to simplify things for certain configurations.

Patch is for 4.2.2

Index&#58; bin/osv/orm.py
===================================================================
--- bin/osv/orm.py&nbsp; &nbsp;&#40;revision 704&#41;
+++ bin/osv/orm.py&nbsp; &nbsp;&#40;working copy&#41;
@@ -1416,6 +1416,8 @@
&nbsp;&nbsp; &nbsp;def fields_view_get&#40;self, cr, user, view_id=None, 
view_type='form', context=None, toolbar=False&#41;&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if not context&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;context=&#123;&#125;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;# this handles applying changes to 'src' based on 
the information in 'inherit'
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;def _inherit_apply&#40;src, inherit&#41;&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;def _find&#40;node, node2&#41;&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
node.nodeType==node.ELEMENT_NODE and node.localName==node2.localName&#58;
@@ -1433,17 +1435,81 @@
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;res = 
_find&#40;child, node2&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
res&#58; return res
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;def _findChild&#40;node, name&#41;&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;for child in 
node.childNodes&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
child.nodeType==child.ELEMENT_NODE&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;if child.localName == 'field'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;cname = None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;if child.hasAttribute&#40;'name'&#41;&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;cname = child.getAttribute&#40;'name'&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;if cname == name&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return child
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# updates the given node according to 
the details in the child
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# either an existing child of node is 
removed, or the given child is added
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# the child may have position = 
remove/before/after &#40;default is 'after'&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# and target = a child of node
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;#
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# remove target&nbsp; &nbsp;- removes 
the target node
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# after target&nbsp; &nbsp;&nbsp; 
&nbsp;- inserts child after the target
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# before target&nbsp; &nbsp;- inserts 
child before the target
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;#
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# returns the node newly created, or 
None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;def _updatePage&#40;node, child, 
target_node&#41;&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# the child is a field
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# work out whether to 
replace, insert or remove
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
child.nodeType!=child.ELEMENT_NODE&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# 
position=remove/after/before
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# other_field=field name 
to remove, or field to put this one after/before
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pos = None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
child.hasAttribute&#40;'position'&#41;&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pos = 
child.getAttribute&#40;'position'&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;target = None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
child.hasAttribute&#40;'target'&#41;&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;target = 
child.getAttribute&#40;'target'&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;target_node = 
_findChild&#40;node, target&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if pos != None and not 
target_node&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;raise 
AttributeError, "Couldn't find target '%s' in parent view !" % target
&nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# handle remove
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if pos == 'remove'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;target_node.parentNode.removeChild&#40;target_node&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;target_node = 
None
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# before or 
after
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sib = pos == 
'before' and target_node or target_node.nextSibling
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if sib&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;target_node = node.insertBefore&#40;child, sib&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;# not found or not specified, so add to the end
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;target_node = node.appendChild&#40;child&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return target_node
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# src is the main form, dest is the one 
which inherits it
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# we use dest to change src
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# dest does not change
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;doc_src = 
dom.minidom.parseString&#40;src&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;doc_dest = 
dom.minidom.parseString&#40;inherit&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# work through each of the child nodes, 
updating the dest as required
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;for node2 in 
doc_dest.childNodes&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if not 
node2.nodeType==node2.ELEMENT_NODE&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;continue
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# find the corresponding 
node in the source doc
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;node = 
_find&#40;doc_src, node2&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if node&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# the node is 
probably a page
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# use the 
default position 'inside', meaning we add a new page
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;pos = 
'inside'
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
node2.hasAttribute&#40;'position'&#41;&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;pos = node2.getAttribute&#40;'position'&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# handle 
replacing a page - we add the new one before the old one, and then remove the 
old one
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if 
pos=='replace'&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;parent = node.parentNode
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;for child in node2.childNodes&#58;
@@ -1451,17 +1517,28 @@
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;parent.insertBefore&#40;child, node&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;parent.removeChild&#40;node&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;# pos is inside, after, before or update
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;# start with an unknown target
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;target_node = None
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;for child in node2.childNodes&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;# each child is a page
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;# we work out where this page should be
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;if child.nodeType==child.ELEMENT_NODE&#58;
-&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if pos=='inside'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if pos=='update'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# we need to update the fields 
within this page
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;target_node = 
_updatePage&#40;node, child, target_node&#41;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;elif pos=='inside'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# add a new page inside this one
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;node.appendChild&#40;child&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;elif pos=='after'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# add a new page after a given one
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;sib = node.nextSibling
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if sib&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;node.parentNode.insertBefore&#40;child, sib&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;node.parentNode.appendChild&#40;child&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;elif pos=='before'&#58;
+&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;# add a new page before a given one
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;node.parentNode.insertBefore&#40;child, node&#41;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;else&#58;
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; 
&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;raise AttributeError, 'Unknown 
position in inherited view %s !' % pos


------------------------
--
Simon Glass
Christchurch
New Zealand




_______________________________________________
Tinyerp-users mailing list
http://tiny.be/mailman/listinfo/tinyerp-users

Reply via email to