ajay javiya (OpenERP) has proposed merging 
lp:~openerp-dev/openobject-server/trunk-sloppy-rng-jam-validate-aja into 
lp:~openerp-dev/openobject-server/trunk-sloppy-rng-jam.

Requested reviews:
  Jigar Amin  (OpenERP) (jam-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-sloppy-rng-jam-validate-aja/+merge/118358

Hello,
Improve validation for graph and tree view.
Thank You 
-- 
https://code.launchpad.net/~openerp-dev/openobject-server/trunk-sloppy-rng-jam-validate-aja/+merge/118358
Your team OpenERP R&D Team is subscribed to branch 
lp:~openerp-dev/openobject-server/trunk-sloppy-rng-jam.
=== modified file 'openerp/tests/test_view_validation.py'
--- openerp/tests/test_view_validation.py	2012-08-06 09:11:44 +0000
+++ openerp/tests/test_view_validation.py	2012-08-06 13:42:22 +0000
@@ -52,12 +52,13 @@
 
 invalid_graph = etree.parse(StringIO('''\
 <graph>
-      <group>
+    <label/>
+    <group>
         <div>
-          <field></field>
-          <field></field>
+            <field></field>
+            <field></field>
         </div>
-      </group>
+    </group>
 </graph>
 ''')).getroot()
 
@@ -81,12 +82,10 @@
 
 valid_tree= etree.parse(StringIO('''\
 <tree string="">
-    <button></button>
-    <label string=""></label>
-    <field name=""></field>
-    <field name=""></field>
-    <field name=""></field>
-    <button></button>
+    <field name=""></field>
+    <field name=""></field>
+    <button/>
+    <field name=""></field>
 </tree>
 ''')).getroot()
 

=== modified file 'openerp/tools/view_validation.py'
--- openerp/tools/view_validation.py	2012-08-06 10:36:31 +0000
+++ openerp/tools/view_validation.py	2012-08-06 13:42:22 +0000
@@ -12,12 +12,22 @@
 
 def valid_field_in_graph(arch):
     """A `field` node must be below a `graph` node."""
-    return not arch.xpath('//graph[not ((field) and (@string))]')
+    if arch.xpath('//graph[not (@string)]'):
+        return False
+    for child in arch.xpath('/graph/child::*'):
+        if child.tag != 'field':
+            return False
+    return True
 
 
 def valid_field_in_tree(arch):
     """A `field` and `button` node must be below a `tree` node. And tree must have `string` attribute."""
-    return not arch.xpath('//tree[not((field) or (button)) and (@string)]')
+    if arch.xpath('//tree[not (@string)]'):
+        return False
+    for child in arch.xpath('/tree/child::*'):
+        if child.tag not in ('field', 'button'):
+            return False
+    return True
 
 
 def valid_att_in_field(arch):
@@ -57,20 +67,18 @@
 
 def valid_view(arch):
     if arch.tag == 'form':
-        for pred in [valid_page_in_book,valid_att_in_form,valid_type_in_colspan,\
-                      valid_type_in_col,valid_att_in_field,valid_att_in_label]:
+        for pred in [valid_page_in_book, valid_att_in_form, valid_type_in_colspan,\
+                      valid_type_in_col, valid_att_in_field, valid_att_in_label]:
             if not pred(arch):
                 _logger.error('Invalid XML: %s', pred.__doc__)
                 return False
     elif arch.tag == 'graph':
-        for pred in [valid_field_in_graph,valid_type_in_colspan,valid_type_in_col,\
-                      valid_att_in_field,valid_att_in_label]:
+        for pred in [valid_field_in_graph, valid_att_in_field]:
             if not pred(arch):
                 _logger.error('Invalid XML: %s', pred.__doc__)
                 return False
     elif arch.tag == 'tree':
-        for pred in [valid_field_in_tree,valid_type_in_colspan,valid_type_in_col,\
-                     valid_att_in_field,valid_att_in_label]:
+        for pred in [valid_field_in_tree, valid_att_in_field]:
             if not pred(arch):
                 _logger.error('Invalid XML: %s', pred.__doc__)
                 return False

_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help   : https://help.launchpad.net/ListHelp

Reply via email to