[IMP] Use LazyResponse for website.render()

bzr revid: fme@openerp.com-20131120202842-zethge8jykzlzjjy
This commit is contained in:
Fabien Meghazi 2013-11-20 21:28:42 +01:00
parent 2f0f411b43
commit 7d43b226ab
2 changed files with 16 additions and 12 deletions

View File

@ -261,8 +261,9 @@ class Website(openerp.addons.web.controllers.main.Home):
@website.route(['/robots.txt'], type='http', auth="public")
def robots(self):
body = request.website.render('website.robots', {'url_root': request.httprequest.url_root})
return request.make_response(body, headers=[('Content-Type', 'text/plain')])
response = request.website.render('website.robots', {'url_root': request.httprequest.url_root})
response.mimetype = 'text/plain'
return response
@website.route('/sitemap', type='http', auth='public', multilang=True)
def sitemap(self):
@ -270,14 +271,11 @@ class Website(openerp.addons.web.controllers.main.Home):
@website.route('/sitemap.xml', type='http', auth="public")
def sitemap_xml(self):
body = request.website.render('website.sitemap_xml', {
response = request.website.render('website.sitemap_xml', {
'pages': request.website.enumerate_pages()
})
return request.make_response(body, [
('Content-Type', 'application/xml;charset=utf-8')
])
response.headers['Content-Type'] = 'application/xml;charset=utf-8'
return response
class Images(http.Controller):
def placeholder(self, response):

View File

@ -20,8 +20,7 @@ from openerp.osv import orm, osv, fields
from openerp.tools.safe_eval import safe_eval
from openerp.addons.web import http
from openerp.addons.web.http import request
from openerp.addons.web.http import request, LazyResponse
logger = logging.getLogger(__name__)
@ -157,7 +156,7 @@ class website(osv.osv):
'translatable': not is_public_user and not is_master_lang and request.multilang,
})
def render(self, cr, uid, ids, template, values=None, context=None):
def _render(self, cr, uid, ids, template, values=None, context=None):
view = self.pool.get("ir.ui.view")
IMD = self.pool.get("ir.model.data")
user = self.pool.get("res.users")
@ -221,6 +220,13 @@ class website(osv.osv):
return self.error(cr, uid, 500 if qweb_context['editable'] else 404,
qweb_context, context=context)
def render(self, cr, uid, ids, template, values=None, context=None):
def callback(template, values, context):
return self._render(cr, uid, ids, template, values, context)
if values is None:
values = {}
return LazyResponse(callback, template=template, values=values, context=context)
def error(self, cr, uid, code, qweb_context, context=None):
View = request.registry['ir.ui.view']
return werkzeug.wrappers.Response(
@ -478,7 +484,7 @@ class website(osv.osv):
object_ids = model_obj.search(cr, uid, domain, limit=step, offset=offset, order=orderby)
object_ids = model_obj.browse(cr, uid, object_ids)
for object_id in object_ids:
html += request.website.render(template, {'object_id': object_id})
html += request.website._render(template, {'object_id': object_id})
return html
def get_menu(self, cr, uid, ids, context=None):