diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 6b14a16c9aa..baa6b6c780b 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -129,13 +129,6 @@ class Website(openerp.addons.web.controllers.main.Home): values = { 'path': path, } - try: - module, xmlid = path.split('.', 1) - IMD = request.registry.get("ir.model.data") - obj = IMD.get_object_reference(request.cr, request.uid, module, xmlid) - values['main_object'] = request.registry[obj[0]].browse(request.cr, request.uid, obj[1]) - except Exception: - pass try: html = request.website.render(path, values) except ValueError: diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 83f9e6e6d40..ec9d56632f5 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -168,18 +168,25 @@ class website(osv.osv): inherit_branding=qweb_context.setdefault('editable', False), ) + view_ref = None # check if xmlid of the template exists try: module, xmlid = template.split('.', 1) - IMD.get_object_reference(cr, uid, module, xmlid) + view_ref = IMD.get_object_reference(cr, uid, module, xmlid) except ValueError: # catches both unpack errors and gor errors module, xmlid = 'website', template try: - IMD.get_object_reference(cr, uid, module, xmlid) + view_ref = IMD.get_object_reference(cr, uid, module, xmlid) except ValueError: logger.error("Website Rendering Error.\n\n%s" % traceback.format_exc()) return self.render(cr, uid, ids, 'website.404', qweb_context) + try: + main_object = request.registry[view_ref[0]].browse(cr, uid, view_ref[1]) + qweb_context['main_object'] = main_object + except Exception: + pass + try: return view.render( cr, uid, "%s.%s" % (module, xmlid), qweb_context,