[REV] Revert some stuff in order to bring back main_object on all rendered views
authorFabien Meghazi <fme@openerp.com>
Thu, 23 Jan 2014 13:54:08 +0000 (14:54 +0100)
committerFabien Meghazi <fme@openerp.com>
Thu, 23 Jan 2014 13:54:08 +0000 (14:54 +0100)
bzr revid: fme@openerp.com-20140123135408-qp4z7ry4a2vej2jy

addons/website/controllers/main.py
addons/website/models/website.py

index 627773b..d177f3d 100644 (file)
@@ -104,9 +104,7 @@ class Website(openerp.addons.web.controllers.main.Home):
             page = 'website.%s' % page
 
         try:
-            module, xmlid = page.split('.', 1)
-            model, view_id = request.registry["ir.model.data"].get_object_reference(request.cr, request.uid, module, xmlid)
-            values['main_object'] = request.registry["ir.ui.view"].browse(request.cr, request.uid, view_id, context=request.context)
+            request.website.get_template(page)
         except ValueError, e:
             # page not found
             if request.context['editable']:
index cee457b..fe7d21c 100644 (file)
@@ -209,6 +209,13 @@ class website(osv.osv):
             translatable=not is_master_lang,
         )
 
+    def get_template(self, cr, uid, ids, template, context=None):
+        if '.' not in template:
+            template = 'website.%s' % template
+        module, xmlid = template.split('.', 1)
+        model, view_id = request.registry["ir.model.data"].get_object_reference(cr, uid, module, xmlid)
+        return self.pool["ir.ui.view"].browse(cr, uid, view_id, context=context)
+
     def _render(self, cr, uid, ids, template, values=None, context=None):
         user = self.pool.get("res.users")
         if not context:
@@ -233,10 +240,13 @@ class website(osv.osv):
         qweb_values.setdefault('editable', False)
 
         # in edit mode ir.ui.view will tag nodes
-        context['inherit_branding']=qweb_values['editable']
+        context['inherit_branding'] = qweb_values['editable']
 
-        result = self.pool['ir.ui.view'].render(cr, uid, template, qweb_values, engine='website.qweb', context=context)
-        return result
+        view = self.get_template(cr, uid, ids, template)
+
+        if 'main_object' not in qweb_values:
+            qweb_values['main_object'] = view
+        return view.render(qweb_values, engine='website.qweb', context=context)
 
     def render(self, cr, uid, ids, template, values=None, status_code=None, context=None):
         def callback(template, values, context):