[IMP] Improvement/changes to the http request/response API.

- Get rid of LazyResponses
- Made website.render() an alias to request.render() [just kept in case this is merged in saas-3 but should be removed completely in favor of request.render()]

Need server/trunk's rev#5102

bzr revid: fme@openerp.com-20140226164448-ad7mjzgg5aw66erq
This commit is contained in:
Fabien Meghazi 2014-02-26 17:44:48 +01:00
commit 71537320c5
1 changed files with 12 additions and 16 deletions

View File

@ -33,7 +33,7 @@ import openerp.modules.registry
from openerp.tools.translate import _
from openerp import http
from openerp.http import request, serialize_exception as _serialize_exception, LazyResponse
from openerp.http import request, serialize_exception as _serialize_exception
_logger = logging.getLogger(__name__)
@ -591,12 +591,13 @@ html_template = """<!DOCTYPE html>
</html>
"""
def render_bootstrap_template(db, template, values=None, debug=False, lazy=False, **kw):
if request and request.debug:
def render_bootstrap_template(template, values=None, debug=False, db=None, **kw):
if not db:
db = request.db
if request.debug:
debug = True
if values is None:
values = {}
values.update(kw)
values['debug'] = debug
values['current_db'] = db
try:
@ -612,15 +613,7 @@ def render_bootstrap_template(db, template, values=None, debug=False, lazy=False
values['modules'] = module_boot(db=db)
values['modules'] = simplejson.dumps(values['modules'])
def callback(template, values):
registry = openerp.modules.registry.RegistryManager.get(db)
with registry.cursor() as cr:
view_obj = registry["ir.ui.view"]
return view_obj.render(cr, openerp.SUPERUSER_ID, template, values)
if lazy:
return LazyResponse(callback, template=template, values=values)
else:
return callback(template, values)
return request.render(template, values, **kw)
class Home(http.Controller):
@ -633,8 +626,11 @@ class Home(http.Controller):
ensure_db()
if request.session.uid:
html = render_bootstrap_template(request.session.db, "web.webclient_bootstrap")
return request.make_response(html, {'Cache-Control': 'no-cache', 'Content-Type': 'text/html; charset=utf-8'})
headers = {
'Cache-Control': 'no-cache',
'Content-Type': 'text/html; charset=utf-8',
}
return render_bootstrap_template("web.webclient_bootstrap", headers=headers)
else:
return http.local_redirect('/web/login', query=request.params)
@ -651,7 +647,7 @@ class Home(http.Controller):
if uid is not False:
return http.redirect_with_hash(redirect)
values['error'] = "Wrong login/password"
return render_bootstrap_template(request.session.db, 'web.login', values, lazy=True)
return render_bootstrap_template('web.login', values)
@http.route('/login', type='http', auth="none")
def login(self, db, login, key, redirect="/web", **kw):