diff --git a/addons/website/models/ir_ui_view.py b/addons/website/models/ir_ui_view.py index 95e2179c9ec..c44d0f73967 100644 --- a/addons/website/models/ir_ui_view.py +++ b/addons/website/models/ir_ui_view.py @@ -1,8 +1,12 @@ # -*- coding: utf-8 -*- import copy +import simplejson +import werkzeug from lxml import etree, html +from openerp.addons.website.models import website +from openerp.http import request from openerp.osv import osv, fields class view(osv.osv): @@ -117,6 +121,49 @@ class view(osv.osv): return arch + def render(self, cr, uid, id_or_xml_id, values=None, engine='ir.qweb', context=None): + if request.website_enabled: + engine='website.qweb' + + if isinstance(id_or_xml_id, list): + id_or_xml_id = id_or_xml_id[0] + if isinstance(id_or_xml_id, (int, long)): + id_or_xml_id = self.get_view_xmlid(cr, uid, id_or_xml_id) + + if not context: + context = {} + + qcontext = context.copy() + qcontext.update( + website=request.website, + url_for=website.url_for, + keep_query=website.keep_query, + slug=website.slug, + res_company=request.website.company_id, + user_id=self.pool.get("res.users").browse(cr, uid, uid), + editable=False, + + # TODO: move this in server's ir.ui.view + request=request, + json=simplejson, + quote_plus=werkzeug.url_quote_plus, + ) + + # add some values + if values: + qcontext.update(values) + + # in edit mode ir.ui.view will tag nodes + context['inherit_branding'] = qcontext['editable'] + + view_obj = request.website.get_template(id_or_xml_id) + if 'main_object' not in qcontext: + qcontext['main_object'] = view_obj + + values = qcontext + + return super(view, self).render(cr, uid, id_or_xml_id, values=values, engine=engine, context=context) + def save(self, cr, uid, res_id, value, xpath=None, context=None): """ Update a view section. The view section may embed fields to write diff --git a/addons/website/models/website.py b/addons/website/models/website.py index a3d7e154678..96605000bba 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -221,7 +221,6 @@ class website(osv.osv): request.redirect = lambda url: werkzeug.utils.redirect(url_for(url)) request.context.update( - is_master_lang=is_master_lang, editable=is_website_publisher, translatable=not is_master_lang, ) @@ -234,37 +233,8 @@ class website(osv.osv): 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: - context = {} - - # Take a context - qweb_values = context.copy() - # add some values - if values: - qweb_values.update(values) - # fill some defaults - qweb_values.update( - request=request, - json=simplejson, - website=request.website, - url_for=url_for, - keep_query=keep_query, - slug=slug, - res_company=request.website.company_id, - user_id=user.browse(cr, uid, uid), - quote_plus=werkzeug.url_quote_plus, - ) - qweb_values.setdefault('editable', False) - - # in edit mode ir.ui.view will tag nodes - context['inherit_branding'] = qweb_values['editable'] - - 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) + # TODO: remove this. (just kept for backward api compatibility for saas-3) + return self.pool['ir.ui.view'].render(cr, uid, template, values=values, context=context) def render(self, cr, uid, ids, template, values=None, status_code=None, context=None): def callback(template, values, context):