def _check_xml(self, cr, uid, ids, context=None): if context is None: context = {} context = dict(context, check_view_ids=ids) # Sanity checks: the view should not break anything upon rendering! # Any exception raised below will cause a transaction rollback. for view in self.browse(cr, uid, ids, context): view_def = self.read_combined(cr, uid, view.id, None, context=context) view_arch_utf8 = view_def['arch'] if view.type != 'qweb': view_doc = etree.fromstring(view_arch_utf8) # verify that all fields used are valid, etc. self.postprocess_and_fields(cr, uid, view.model, view_doc, view.id, context=context) # RNG-based validation is not possible anymore with 7.0 forms view_docs = [view_doc] if view_docs[0].tag == 'data': # A <data> element is a wrapper for multiple root nodes view_docs = view_docs[0] validator = self._relaxng() for view_arch in view_docs: if (view_arch.get('version') < '7.0') and validator and not validator.validate(view_arch): for error in validator.error_log: _logger.error(tools.ustr(error)) return False if not valid_view(view_arch): return False return True
def _check_xml(self, cr, uid, ids, context=None): for view in self.browse(cr, uid, ids, context): # Sanity check: the view should not break anything upon rendering! view_arch_utf8 = self._check_render_view(cr, uid, view, context=context) # always utf-8 bytestring - legacy convention if not view_arch_utf8: return False # RNG-based validation is not possible anymore with 7.0 forms # TODO 7.0: provide alternative assertion-based validation of view_arch_utf8 view_docs = [etree.fromstring(view_arch_utf8)] if view_docs[0].tag == 'data': # A <data> element is a wrapper for multiple root nodes view_docs = view_docs[0] validator = self._relaxng() for view_arch in view_docs: if (view_arch.get('version') < '7.0' ) and validator and not validator.validate(view_arch): for error in validator.error_log: _logger.error(tools.ustr(error)) return False if not valid_view(view_arch): return False return True
def _check_xml(self, cr, uid, ids, context=None): if context is None: context = {} context['check_view_ids'] = ids for view in self.browse(cr, uid, ids, context): # Sanity check: the view should not break anything upon rendering! view_arch_utf8 = self._check_render_view(cr, uid, view, context=context) # always utf-8 bytestring - legacy convention if not view_arch_utf8: return False # RNG-based validation is not possible anymore with 7.0 forms # TODO 7.0: provide alternative assertion-based validation of view_arch_utf8 view_docs = [etree.fromstring(view_arch_utf8)] if view_docs[0].tag == 'data': # A <data> element is a wrapper for multiple root nodes view_docs = view_docs[0] validator = self._relaxng() for view_arch in view_docs: if (view_arch.get('version') < '7.0') and validator and not validator.validate(view_arch): for error in validator.error_log: _logger.error(tools.ustr(error)) return False if not valid_view(view_arch): return False return True