From da97f83b0b8d9269331ef8809bb727fec5ffe378 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Tue, 1 Jul 2008 21:31:46 +0000 Subject: [PATCH] RNG Tests bzr revid: fp@tinyerp.com-57a3e9e01e4bc725740257eaf2a28af169eebac8 --- bin/addons/base/ir/ir_ui_view.py | 25 ++++++++++++++++--------- bin/addons/base/rng/board.rng | 21 +++++++++++++++++++++ bin/addons/base/rng/form.rng | 21 +++++++++++++++++++++ bin/addons/base/rng/graph.rng | 21 +++++++++++++++++++++ bin/addons/base/rng/tree.rng | 21 +++++++++++++++++++++ 5 files changed, 100 insertions(+), 9 deletions(-) create mode 100644 bin/addons/base/rng/board.rng create mode 100644 bin/addons/base/rng/form.rng create mode 100644 bin/addons/base/rng/graph.rng create mode 100644 bin/addons/base/rng/tree.rng diff --git a/bin/addons/base/ir/ir_ui_view.py b/bin/addons/base/ir/ir_ui_view.py index e1fbba0c329..43ceae9131c 100644 --- a/bin/addons/base/ir/ir_ui_view.py +++ b/bin/addons/base/ir/ir_ui_view.py @@ -28,16 +28,23 @@ ############################################################################## from osv import fields,osv -from xml import dom +from lxml import etree +import tools +import netsvc +import os -def _check_xml(self, cr, uid, ids): - try: - cr.execute('select arch from ir_ui_view where id in ('+','.join(map(str,ids))+')') - for row in cr.fetchall(): - doc = dom.minidom.parseString(row[0]) - return True - except Exception, e: - return False +def _check_xml(self, cr, uid, ids, context={}): + for view in self.browse(cr, uid, ids, context): + eview = etree.fromstring(view.arch) + frng = tools.file_open(os.path.join('base','rng',view.type+'.rng')) + relaxng = etree.RelaxNG(file=frng) + if not relaxng.validate(eview): + logger = netsvc.Logger() + logger.notifyChannel('init', netsvc.LOG_ERROR, 'The view do not fit the required schema !') + logger.notifyChannel('init', netsvc.LOG_ERROR, relaxng.error_log.last_error) + print view.arch + return False + return True class view(osv.osv): _name = 'ir.ui.view' diff --git a/bin/addons/base/rng/board.rng b/bin/addons/base/rng/board.rng new file mode 100644 index 00000000000..73477113f62 --- /dev/null +++ b/bin/addons/base/rng/board.rng @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/addons/base/rng/form.rng b/bin/addons/base/rng/form.rng new file mode 100644 index 00000000000..73477113f62 --- /dev/null +++ b/bin/addons/base/rng/form.rng @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/addons/base/rng/graph.rng b/bin/addons/base/rng/graph.rng new file mode 100644 index 00000000000..73477113f62 --- /dev/null +++ b/bin/addons/base/rng/graph.rng @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/bin/addons/base/rng/tree.rng b/bin/addons/base/rng/tree.rng new file mode 100644 index 00000000000..73477113f62 --- /dev/null +++ b/bin/addons/base/rng/tree.rng @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + +