- Generate all the view - !python {model: ir.ui.view}: | import logging from lxml import etree def encode(s): if isinstance(s, unicode): return s.encode('utf8') return s logger = logging.getLogger() ids = model.search(cr, uid, [], context=context) bad_view = [] counter = 0 for view in model.read(cr, uid, ids, [], context=context): try: obj = self.pool.get(view['model']) res = obj.fields_view_get(cr, uid, view_id=view['id'], view_type=view['type'], context=context, toolbar=False, submenu=False) # remake a check on view because if the fields view get is overloaded the check is not done source = etree.fromstring(encode(res['arch'])) obj._view_look_dom_arch(cr, uid, source, view['id'], context) except Exception, e: logger.error(e) bad_view.append("xml_id %r, id %r, model %r,name %r" % (view['xml_id'], view['id'], view['model'], view['name'])) assert not bad_view, 'View in error: \n %s' % "\n ".join(bad_view)