[IMP] Refactor CROS support
bzr revid: fme@openerp.com-20140220133714-igpobx20mhzlxi20
This commit is contained in:
parent
d7ea890cbe
commit
587ada964e
|
@ -452,19 +452,12 @@ class HttpRequest(WebRequest):
|
||||||
self.params = params
|
self.params = params
|
||||||
|
|
||||||
def dispatch(self):
|
def dispatch(self):
|
||||||
# TODO: refactor this correctly. This is a quick fix for pos demo.
|
|
||||||
if request.httprequest.method == 'OPTIONS' and request.endpoint and request.endpoint.routing.get('cors'):
|
if request.httprequest.method == 'OPTIONS' and request.endpoint and request.endpoint.routing.get('cors'):
|
||||||
response = Response(status=200)
|
headers = {
|
||||||
response.headers.set('Access-Control-Allow-Origin', request.endpoint.routing['cors'])
|
'Access-Control-Max-Age': 60 * 60 * 24,
|
||||||
methods = 'GET, POST'
|
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
|
||||||
if request.endpoint.routing['type'] == 'json':
|
}
|
||||||
methods = 'POST'
|
return Response(status=200, headers=headers)
|
||||||
elif request.endpoint.routing.get('methods'):
|
|
||||||
methods = ', '.join(request.endpoint.routing['methods'])
|
|
||||||
response.headers.set('Access-Control-Allow-Methods', methods)
|
|
||||||
response.headers.set('Access-Control-Max-Age',60*60*24)
|
|
||||||
response.headers.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
|
|
||||||
return response
|
|
||||||
|
|
||||||
r = self._call_function(**self.params)
|
r = self._call_function(**self.params)
|
||||||
if not r:
|
if not r:
|
||||||
|
@ -953,13 +946,22 @@ class Response(werkzeug.wrappers.Response):
|
||||||
template = kw.pop('template', None)
|
template = kw.pop('template', None)
|
||||||
qcontext = kw.pop('qcontext', None)
|
qcontext = kw.pop('qcontext', None)
|
||||||
uid = kw.pop('uid', None)
|
uid = kw.pop('uid', None)
|
||||||
self.set_default(template, qcontext, uid)
|
|
||||||
super(Response, self).__init__(*args, **kw)
|
super(Response, self).__init__(*args, **kw)
|
||||||
|
self.set_default(template, qcontext, uid)
|
||||||
|
|
||||||
def set_default(self, template=None, qcontext=None, uid=None):
|
def set_default(self, template=None, qcontext=None, uid=None):
|
||||||
self.template = template
|
self.template = template
|
||||||
self.qcontext = qcontext or dict()
|
self.qcontext = qcontext or dict()
|
||||||
self.uid = uid
|
self.uid = uid
|
||||||
|
# Support for Cross-Origin Resource Sharing
|
||||||
|
if request.endpoint and 'cors' in request.endpoint.routing:
|
||||||
|
self.headers.set('Access-Control-Allow-Origin', request.endpoint.routing['cors'])
|
||||||
|
methods = 'GET, POST'
|
||||||
|
if request.endpoint.routing['type'] == 'json':
|
||||||
|
methods = 'POST'
|
||||||
|
elif request.endpoint.routing.get('methods'):
|
||||||
|
methods = ', '.join(request.endpoint.routing['methods'])
|
||||||
|
self.headers.set('Access-Control-Allow-Methods', methods)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_qweb(self):
|
def is_qweb(self):
|
||||||
|
@ -1132,16 +1134,6 @@ class Root(object):
|
||||||
if not explicit_session and hasattr(response, 'set_cookie'):
|
if not explicit_session and hasattr(response, 'set_cookie'):
|
||||||
response.set_cookie('session_id', httprequest.session.sid, max_age=90 * 24 * 60 * 60)
|
response.set_cookie('session_id', httprequest.session.sid, max_age=90 * 24 * 60 * 60)
|
||||||
|
|
||||||
# Support for Cross-Origin Resource Sharing
|
|
||||||
if request.endpoint and 'cors' in request.endpoint.routing:
|
|
||||||
response.headers.set('Access-Control-Allow-Origin', request.endpoint.routing['cors'])
|
|
||||||
methods = 'GET, POST'
|
|
||||||
if request.endpoint.routing['type'] == 'json':
|
|
||||||
methods = 'POST'
|
|
||||||
elif request.endpoint.routing['methods']:
|
|
||||||
methods = ', '.join(request.endpoint.routing['methods'])
|
|
||||||
response.headers.set('Access-Control-Allow-Methods', methods)
|
|
||||||
|
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def dispatch(self, environ, start_response):
|
def dispatch(self, environ, start_response):
|
||||||
|
|
Loading…
Reference in New Issue