ajay javiya (OpenERP) has proposed merging 
lp:~openerp-commiter/openobject-server/trunk-sloppy-rng-jam-validation-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-commiter/openobject-server/trunk-sloppy-rng-jam-validation-aja/+merge/113153

Hello
Add validation for form , graph and tree view.
Thank You 
-- 
https://code.launchpad.net/~openerp-commiter/openobject-server/trunk-sloppy-rng-jam-validation-aja/+merge/113153
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-06-22 13:10:04 +0000
+++ openerp/tests/test_view_validation.py	2012-07-03 06:11:21 +0000
@@ -6,39 +6,168 @@
 import unittest2
 
 import openerp
-from openerp.tools.view_validation import valid_page_in_book, valid_view
-
-invalid_page = etree.parse(StringIO('''\
-<form>
+from openerp.tools.view_validation import *
+
+invalid_form = etree.parse(StringIO('''\
+<form>     
+    <label/>    
+      <group>
+        <div>
+          <page/>
+          <label/>
+          <field>
+          </field>
+        </div>
+      </group>
+</form>
+''')).getroot()
+
+valid_form = etree.parse(StringIO('''\
+<form string="">
+    <notebook>
+        <label for=""/>
+        <page>
+            <field name=""/>
+            <label string=""/>
+            <field name=""/>
+        </page>
+    </notebook>
+</form>
+''')).getroot()
+
+invalid_graph = etree.parse(StringIO('''\
+<graph>
+      <group>
+        <div>
+          <field/>
+          <field/>
+        </div>
+      </group>
+</graph>
+''')).getroot()
+
+valid_graph = etree.parse(StringIO('''\
+<graph string="">
+    <field></field>
+    <field/>
+    <field/>
+</graph>
+''')).getroot()
+
+
+valid_tree= etree.parse(StringIO('''\
+<tree string="">
+    <button/>
+    <field/>
+    <field/>
+    <field/>
+    <button/>
+</tree>
+''')).getroot()
+
+invalid_tree = etree.parse(StringIO('''\
+<tree>
   <group>
     <div>
-      <page>
-      </page>
+      <field/>
+      <field/>
     </div>
   </group>
-</form>
+</tree>
 ''')).getroot()
 
-valid_page = etree.parse(StringIO('''\
-<form>
-  <notebook>
+invalid_attribute = etree.parse(StringIO('''\
+<group colspan="saf" col="dsd">
     <div>
-      <page>
-      </page>
+      <label/>
+      <field>
+      </field>
     </div>
-  </notebook>
-</form>
-''')).getroot()
+</group>
+''')).getroot()
+
+valid_attribute = etree.parse(StringIO('''\
+<group colspan="1" col="2">
+    <label for=""/>
+    <label string=""/>
+    <label for=""/>
+</group>
+''')).getroot()
+
 
 class test_view_validation(unittest2.TestCase):
     """ Test the view validation code (but not the views themselves). """
 
     def test_page_validation(self):
-        assert not valid_page_in_book(invalid_page)
-        assert valid_page_in_book(valid_page)
-
-        assert not valid_view(invalid_page)
-        assert valid_view(valid_page)
+        assert not valid_page_in_book(invalid_form)
+        assert valid_page_in_book(valid_form)
+        
+        assert not valid_view(invalid_form)
+        assert valid_view(valid_form)
+        
+    def test_all_field_validation(self):
+        assert not  valid_att_in_field(invalid_form)
+        assert  valid_att_in_field(valid_form)
+
+        assert not valid_field_view(invalid_form)
+        assert valid_field_view(valid_form)
+
+    def test_all_label_validation(self):
+        assert not  valid_att_in_label(invalid_form)
+        assert  valid_att_in_label(valid_form)
+
+        assert not valid_label_view(invalid_form)
+        assert valid_label_view(valid_form)
+        
+    def test_form_string_validation(self):
+        assert not valid_att_in_form(invalid_form)
+        assert valid_att_in_form(valid_form)
+
+        assert not valid_form_view(invalid_form)
+        assert valid_form_view(valid_form)
+
+    def test_graph_field_validation(self):
+        assert not valid_field_in_graph(invalid_graph)
+        assert valid_field_in_graph(valid_graph)
+        
+        assert not valid_view(invalid_graph)
+        assert valid_view(valid_graph)        
+
+    def test_graph_string_validation(self):
+        assert not valid_att_in_graph(invalid_graph)
+        assert valid_att_in_graph(valid_graph)
+
+        assert not valid_graph_view(invalid_graph)
+        assert valid_graph_view(valid_graph)
+    
+    def test_tree_field_validation(self):
+        assert not valid_field_in_tree(invalid_tree)
+        assert valid_field_in_tree(valid_tree)
+
+        assert not valid_view(invalid_tree)
+        assert valid_view(valid_tree)        
+
+    def test_tree_string_validation(self):
+        assert not valid_att_in_tree(invalid_tree)
+        assert valid_att_in_tree(valid_tree)
+    
+        assert not valid_tree_view(invalid_tree)
+        assert valid_tree_view(valid_tree)
+        
+    def test_colspan_datatype_validation(self):
+        assert not valid_type_in_colspan(invalid_attribute)
+        assert valid_type_in_colspan(valid_attribute)
+        
+        assert not valid_colspan_view(invalid_attribute)
+        assert valid_colspan_view(valid_attribute)
+    
+    def test_col_datatype_validation(self):
+        assert not valid_type_in_col(invalid_attribute)
+        assert valid_type_in_col(valid_attribute)
+        
+        assert not valid_col_view(invalid_attribute)
+        assert valid_col_view(valid_attribute)
+
 
 if __name__ == '__main__':
     unittest2.main()

=== modified file 'openerp/tools/view_validation.py'
--- openerp/tools/view_validation.py	2012-06-22 13:10:04 +0000
+++ openerp/tools/view_validation.py	2012-07-03 06:11:21 +0000
@@ -4,9 +4,101 @@
     """A `page` node must be below a `book` node."""
     return not arch.xpath('//page[not(ancestor::notebook)]')
 
+def valid_field_in_graph(arch):
+    """A `field` node must be below a `graph` node."""
+    return not arch.xpath('//graph[not(field)]')
+
+def valid_field_in_tree(arch):
+    """A `field` and `button` node must be below a `tree` node."""
+    return not arch.xpath('//tree[not((field) and (button))]')
+
+
+def valid_att_in_field(arch):
+    """A `name` attribute must be in a `field` node."""
+    return not arch.xpath('//field[not (@name)]')
+
+def valid_att_in_label(arch):
+    """A `for` and `string` attribute must be in a `lable` node."""
+    return not arch.xpath('//label[not ((@for) or (@string))]')
+    
+def valid_att_in_tree(arch):
+    """A `string` attribute must be in a `tree` node."""
+    return not arch.xpath('//tree[not (@string)]')
+
+def valid_att_in_form(arch):
+    """A `string` attribute must be in a `form` node."""
+    return not arch.xpath('//form[not (@string)]')
+
+def valid_att_in_graph(arch):
+    """A `string` attribute must be in a `graph` node."""
+    return not arch.xpath('//graph[not (@string)]')
+
+def valid_type_in_colspan(arch):
+    """A `colspan` attribute must be an `integer` type."""
+    return arch.xpath('boolean (number (//*/@colspan))')
+    
+def valid_type_in_col(arch):
+    """A `col` attribute must be an `integer` type."""
+    return arch.xpath('boolean (number (//*/@col))')
+    
+def valid_colspan_view(arch):
+        for pred in [valid_type_in_colspan]:
+            if not pred(arch):
+                return False
+        return True
+        
+def valid_col_view(arch):
+        for pred in [valid_type_in_col]:
+            if not pred(arch):
+                return False
+        return True
+
+def valid_field_view(arch):
+        for pred in [valid_att_in_field]:
+            if not pred(arch):
+                return False
+        return True
+    
+def valid_label_view(arch):
+        for pred in [valid_att_in_label]:
+            if not pred(arch):
+                return False
+        return True
+
+def valid_tree_view(arch):
+    if arch.tag == 'tree':
+        for pred in [valid_att_in_tree]:
+            if not pred(arch):
+                return False
+    return True
+
+def valid_form_view(arch):
+    if arch.tag == 'form':
+        for pred in [valid_att_in_form]:
+            if not pred(arch):
+                return False
+    return True
+
+def valid_graph_view(arch):
+    if arch.tag == 'graph':
+        for pred in [valid_att_in_graph]:
+            if not pred(arch):
+                return False
+    return True
+
+    
 def valid_view(arch):
     if arch.tag == 'form':
         for pred in [valid_page_in_book]:
             if not pred(arch):
                 return False
+    elif arch.tag == 'graph':
+        for pred in [valid_field_in_graph]:
+            if not pred(arch):
+                return False
+    elif arch.tag == 'tree':
+        for pred in [valid_field_in_tree]:
+            if not pred(arch):
+                return False
     return True
+

_______________________________________________
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