[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-20140226164551-d42a3g057grr722y
This commit is contained in:
commit
3324351bf6
|
@ -8,7 +8,7 @@ from werkzeug.exceptions import BadRequest
|
|||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import http
|
||||
from openerp.http import request, LazyResponse
|
||||
from openerp.http import request
|
||||
from openerp.addons.web.controllers.main import db_monodb, set_cookie_and_redirect, login_and_redirect
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from openerp.tools.translate import _
|
||||
|
@ -71,7 +71,7 @@ class OAuthLogin(openerp.addons.web.controllers.main.Home):
|
|||
providers = self.list_providers()
|
||||
|
||||
response = super(OAuthLogin, self).web_login(*args, **kw)
|
||||
if isinstance(response, LazyResponse):
|
||||
if response.is_qweb:
|
||||
error = request.params.get('oauth_error')
|
||||
if error == '1':
|
||||
error = _("Sign up is not allowed on this database.")
|
||||
|
@ -82,9 +82,9 @@ class OAuthLogin(openerp.addons.web.controllers.main.Home):
|
|||
else:
|
||||
error = None
|
||||
|
||||
response.params['values']['providers'] = providers
|
||||
response.qcontext['providers'] = providers
|
||||
if error:
|
||||
response.params['values']['error'] = error
|
||||
response.qcontext['error'] = error
|
||||
|
||||
return response
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ import openerp
|
|||
import openerp.addons.web.controllers.main as webmain
|
||||
from openerp.addons.auth_signup.res_users import SignupError
|
||||
from openerp import http
|
||||
from openerp.http import request, LazyResponse
|
||||
from openerp.http import request
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools import exception_to_unicode
|
||||
|
||||
|
@ -40,9 +40,9 @@ class AuthSignup(openerp.addons.web.controllers.main.Home):
|
|||
if request.httprequest.method != 'POST' or mode not in ('reset', 'signup'):
|
||||
# Default behavior is to try to login, which in reset or signup mode in a non-sense.
|
||||
super_response = super(AuthSignup, self).web_login(*args, **kw)
|
||||
response = webmain.render_bootstrap_template(request.session.db, 'auth_signup.signup', qcontext, lazy=True)
|
||||
if isinstance(super_response, LazyResponse):
|
||||
response.params['values'].update(super_response.params['values'])
|
||||
response = webmain.render_bootstrap_template('auth_signup.signup', qcontext)
|
||||
if super_response.is_qweb:
|
||||
response.qcontext.update(super_response.qcontext)
|
||||
token = qcontext.get('token', None)
|
||||
token_infos = None
|
||||
if token:
|
||||
|
@ -66,8 +66,8 @@ class AuthSignup(openerp.addons.web.controllers.main.Home):
|
|||
qcontext.update(config)
|
||||
|
||||
if 'error' in request.params or mode not in ('reset', 'signup') or (not token and not config[mode]):
|
||||
if isinstance(super_response, LazyResponse):
|
||||
super_response.params['values'].update(config)
|
||||
if super_response.is_qweb:
|
||||
super_response.qcontext.update(config)
|
||||
return super_response
|
||||
|
||||
if request.httprequest.method == 'GET':
|
||||
|
|
|
@ -19,7 +19,7 @@ import openerp
|
|||
from openerp.osv import fields
|
||||
from openerp.addons.website.models import website
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request, LazyResponse
|
||||
from openerp.http import request, Response
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -46,9 +46,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
@http.route(website=True, auth="public", multilang=True)
|
||||
def web_login(self, *args, **kw):
|
||||
response = super(Website, self).web_login(*args, **kw)
|
||||
if isinstance(response, LazyResponse):
|
||||
values = dict(response.params['values'], disable_footer=True)
|
||||
response = request.website.render(response.params['template'], values)
|
||||
response.qcontext['disable_footer'] = True
|
||||
return response
|
||||
|
||||
@http.route('/page/<page:page>', type='http', auth="public", website=True, multilang=True)
|
||||
|
@ -69,27 +67,27 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
else:
|
||||
return request.registry['ir.http']._handle_exception(e, 404)
|
||||
|
||||
return request.website.render(page, values)
|
||||
return request.render(page, values)
|
||||
|
||||
@http.route(['/robots.txt'], type='http', auth="public", website=True)
|
||||
def robots(self):
|
||||
response = request.website.render('website.robots', {'url_root': request.httprequest.url_root})
|
||||
response.mimetype = 'text/plain'
|
||||
return response
|
||||
return request.render('website.robots', {'url_root': request.httprequest.url_root}, mimetype='text/plain')
|
||||
|
||||
@http.route('/sitemap', type='http', auth='public', website=True, multilang=True)
|
||||
def sitemap(self):
|
||||
return request.website.render('website.sitemap', {
|
||||
return request.render('website.sitemap', {
|
||||
'pages': request.website.enumerate_pages()
|
||||
})
|
||||
|
||||
@http.route('/sitemap.xml', type='http', auth="public", website=True)
|
||||
def sitemap_xml(self):
|
||||
response = request.website.render('website.sitemap_xml', {
|
||||
values = {
|
||||
'pages': request.website.enumerate_pages()
|
||||
})
|
||||
response.headers['Content-Type'] = 'application/xml;charset=utf-8'
|
||||
return response
|
||||
}
|
||||
headers = {
|
||||
'Content-Type': 'application/xml;charset=utf-8',
|
||||
}
|
||||
return request.render('website.sitemap_xml', values, headers=headers)
|
||||
|
||||
#------------------------------------------------------
|
||||
# Edit
|
||||
|
@ -129,7 +127,7 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
view.write(request.cr, request.uid, [view_id],
|
||||
{'inherit_id': view_option_id}, context=request.context)
|
||||
|
||||
return request.website.render('website.themes', {'theme_changed': True})
|
||||
return request.render('website.themes', {'theme_changed': True})
|
||||
|
||||
@http.route(['/website/snippets'], type='json', auth="public", website=True)
|
||||
def snippets(self):
|
||||
|
@ -408,12 +406,12 @@ class Website(openerp.addons.web.controllers.main.Home):
|
|||
if action_id:
|
||||
action_ids = ServerActions.exists(cr, uid, [action_id], context=context)
|
||||
action_id = action_ids and action_ids[0] or None
|
||||
# run it, return only LazyResponse that are templates to be rendered
|
||||
# run it, return only if we got a Response object
|
||||
if action_id:
|
||||
action = ServerActions.browse(cr, uid, action_id, context=context)
|
||||
if action.state == 'code' and action.website_published:
|
||||
action_res = ServerActions.run(cr, uid, [action_id], context=context)
|
||||
if isinstance(action_res, LazyResponse):
|
||||
if isinstance(action_res, Response):
|
||||
res = action_res
|
||||
if res:
|
||||
return res
|
||||
|
|
|
@ -127,7 +127,7 @@ partners = pool['res.partner'].browse(cr, uid, partner_ids, context=context)
|
|||
values = {
|
||||
'partners': partners,
|
||||
}
|
||||
response = request.website.render("website.template_partner_comment", values)
|
||||
response = request.render("website.template_partner_comment", values)
|
||||
</field>
|
||||
<field name="state">code</field>
|
||||
<field name="type">ir.actions.server</field>
|
||||
|
|
|
@ -18,7 +18,7 @@ except ImportError:
|
|||
import openerp
|
||||
from openerp.osv import orm, osv, fields
|
||||
from openerp.tools.safe_eval import safe_eval
|
||||
from openerp.addons.web.http import request, LazyResponse
|
||||
from openerp.addons.web.http import request
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -229,11 +229,8 @@ class website(osv.osv):
|
|||
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):
|
||||
return self._render(cr, uid, ids, template, values, context)
|
||||
if values is None:
|
||||
values = {}
|
||||
return LazyResponse(callback, status_code=status_code, template=template, values=values, context=context)
|
||||
# TODO: remove this. (just kept for backward api compatibility for saas-3)
|
||||
return request.render(template, values, uid=uid)
|
||||
|
||||
def pager(self, cr, uid, ids, url, total, page=1, step=30, scope=5, url_args=None, context=None):
|
||||
# Compute Pager
|
||||
|
|
Loading…
Reference in New Issue