From b2fdf09676a080eaa3202f6f98ae782ff45f4919 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Valyi?= Date: Tue, 2 Dec 2008 18:41:37 +0100 Subject: [PATCH] view debbugging improvement: cf branche definition bzr revid: rvalyi@gmail.com-20081202174137-zwqbqx7is0vcvrkw --- bin/osv/orm.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/bin/osv/orm.py b/bin/osv/orm.py index c0c44e608b7..22ddd88fe47 100644 --- a/bin/osv/orm.py +++ b/bin/osv/orm.py @@ -770,7 +770,7 @@ class orm_template(object): def view_header_get(self, cr, user, view_id=None, view_type='form', context=None): return False - def __view_look_dom(self, cr, user, node, context=None): + def __view_look_dom(self, cr, user, node, view_id, context=None): if not context: context = {} result = False @@ -796,7 +796,7 @@ class orm_template(object): node.removeChild(f) ctx = context.copy() ctx['base_model_name'] = self._name - xarch, xfields = self.pool.get(relation).__view_look_dom_arch(cr, user, f, ctx) + xarch, xfields = self.pool.get(relation).__view_look_dom_arch(cr, user, f, view_id, ctx) views[str(f.localName)] = { 'arch': xarch, 'fields': xfields @@ -846,11 +846,11 @@ class orm_template(object): if childs: for f in node.childNodes: - fields.update(self.__view_look_dom(cr, user, f, context)) + fields.update(self.__view_look_dom(cr, user, f, view_id, context)) return fields - def __view_look_dom_arch(self, cr, user, node, context=None): - fields_def = self.__view_look_dom(cr, user, node, context=context) + def __view_look_dom_arch(self, cr, user, node, view_id, context=None): + fields_def = self.__view_look_dom(cr, user, node, view_id, context=context) buttons = xpath.Evaluate('//button', node) if buttons: @@ -877,7 +877,23 @@ class orm_template(object): arch = node.toxml(encoding="utf-8").replace('\t', '') fields = self.fields_get(cr, user, fields_def.keys(), context) for field in fields_def: - fields[field].update(fields_def[field]) + if fields.has_key(field): + fields[field].update(fields_def[field]) + else: + logger = netsvc.Logger() + print view_id + print field + cr.execute('select name, model from ir_ui_view where (id=%d or inherit_id=%d) and arch like %s', (view_id, view_id, '%'+ field + '%')) + res = cr.fetchall() + print 'select name, model from ir_ui_view where (id=%d or inherit_id=%d) and arch like %s', (view_id, view_id, field) + print res + msg = "Error, can't find database field or computed field:\n '%s' \nin the following view parts composing the view of object model '%s':\n\n" % (field, res[0][1]) + for line in res: + msg += "- %s\n" % line[0] + msg += "\nEither you wrongly customized this view, \nor some modules bringing those views are not compatible with your current data model" + logger.notifyChannel('orm', netsvc.LOG_ERROR, msg ) + raise except_orm('View error', msg ) + return arch, fields def __get_default_calendar_view(self): @@ -1057,7 +1073,7 @@ class orm_template(object): result['view_id'] = 0 doc = dom.minidom.parseString(result['arch'].encode('utf-8')) - xarch, xfields = self.__view_look_dom_arch(cr, user, doc, context=context) + xarch, xfields = self.__view_look_dom_arch(cr, user, doc, view_id, context=context) result['arch'] = xarch result['fields'] = xfields if toolbar: