[FIX] main_objet is now always set in qweb rendering context
If no main_object is provided, the current ir.ui.view will be used bzr revid: fme@openerp.com-20131015095413-ij6dt2rjo527sgga
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user