[FIX] ir ui view should have rendering context on request.website_enabled
bzr revid: fme@openerp.com-20140206143919-f6vz8rpx9mb4798g
This commit is contained in:
parent
1e4d99eede
commit
b112d5d2f1
|
@ -1,8 +1,12 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
import copy
|
import copy
|
||||||
|
import simplejson
|
||||||
|
import werkzeug
|
||||||
|
|
||||||
from lxml import etree, html
|
from lxml import etree, html
|
||||||
|
|
||||||
|
from openerp.addons.website.models import website
|
||||||
|
from openerp.http import request
|
||||||
from openerp.osv import osv, fields
|
from openerp.osv import osv, fields
|
||||||
|
|
||||||
class view(osv.osv):
|
class view(osv.osv):
|
||||||
|
@ -117,6 +121,49 @@ class view(osv.osv):
|
||||||
|
|
||||||
return arch
|
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):
|
def save(self, cr, uid, res_id, value, xpath=None, context=None):
|
||||||
""" Update a view section. The view section may embed fields to write
|
""" Update a view section. The view section may embed fields to write
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,6 @@ class website(osv.osv):
|
||||||
|
|
||||||
request.redirect = lambda url: werkzeug.utils.redirect(url_for(url))
|
request.redirect = lambda url: werkzeug.utils.redirect(url_for(url))
|
||||||
request.context.update(
|
request.context.update(
|
||||||
is_master_lang=is_master_lang,
|
|
||||||
editable=is_website_publisher,
|
editable=is_website_publisher,
|
||||||
translatable=not is_master_lang,
|
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)
|
return self.pool["ir.ui.view"].browse(cr, uid, view_id, context=context)
|
||||||
|
|
||||||
def _render(self, cr, uid, ids, template, values=None, context=None):
|
def _render(self, cr, uid, ids, template, values=None, context=None):
|
||||||
user = self.pool.get("res.users")
|
# TODO: remove this. (just kept for backward api compatibility for saas-3)
|
||||||
if not context:
|
return self.pool['ir.ui.view'].render(cr, uid, template, values=values, context=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)
|
|
||||||
|
|
||||||
def render(self, cr, uid, ids, template, values=None, status_code=None, context=None):
|
def render(self, cr, uid, ids, template, values=None, status_code=None, context=None):
|
||||||
def callback(template, values, context):
|
def callback(template, values, context):
|
||||||
|
|
Loading…
Reference in New Issue