[FIX] jsonp works
bzr revid: al@openerp.com-20111216164739-ei5hdk4sq32eppzc
This commit is contained in:
parent
3183c975af
commit
65c5eaca8d
|
@ -138,9 +138,10 @@ class JsonRequest(WebRequest):
|
||||||
:returns: an utf8 encoded JSON-RPC2 or JSONP reply
|
:returns: an utf8 encoded JSON-RPC2 or JSONP reply
|
||||||
"""
|
"""
|
||||||
args = self.httprequest.args
|
args = self.httprequest.args
|
||||||
jsonp = args.get('jsonp', False)
|
jsonp = args.get('jsonp')
|
||||||
requestf = None
|
requestf = None
|
||||||
request = None
|
request = None
|
||||||
|
print "ARGS",args
|
||||||
|
|
||||||
if jsonp and self.httprequest.method == 'POST':
|
if jsonp and self.httprequest.method == 'POST':
|
||||||
# jsonp 2 steps step1 POST: save call
|
# jsonp 2 steps step1 POST: save call
|
||||||
|
@ -149,13 +150,13 @@ class JsonRequest(WebRequest):
|
||||||
headers=[('Content-Type', 'text/plain; charset=utf-8')]
|
headers=[('Content-Type', 'text/plain; charset=utf-8')]
|
||||||
r = werkzeug.wrappers.Response(request_id, headers=headers)
|
r = werkzeug.wrappers.Response(request_id, headers=headers)
|
||||||
return r
|
return r
|
||||||
|
elif jsonp and args.get('r'):
|
||||||
|
# jsonp method GET
|
||||||
|
request = args.get('r')
|
||||||
elif jsonp and args.get('id'):
|
elif jsonp and args.get('id'):
|
||||||
# jsonp 2 steps step2 GET: run and return result
|
# jsonp 2 steps step2 GET: run and return result
|
||||||
self.init(args)
|
self.init(args)
|
||||||
request = self.session.jsonp_requests.pop(args.get(id), "")
|
request = self.session.jsonp_requests.pop(args.get(id), "")
|
||||||
elif jsonp and args.get('r'):
|
|
||||||
# jsonp method GET
|
|
||||||
request = args.get('r')
|
|
||||||
else:
|
else:
|
||||||
# regular jsonrpc2
|
# regular jsonrpc2
|
||||||
requestf = self.httprequest.stream
|
requestf = self.httprequest.stream
|
||||||
|
@ -167,6 +168,7 @@ class JsonRequest(WebRequest):
|
||||||
if requestf:
|
if requestf:
|
||||||
self.jsonrequest = simplejson.load(requestf, object_hook=nonliterals.non_literal_decoder)
|
self.jsonrequest = simplejson.load(requestf, object_hook=nonliterals.non_literal_decoder)
|
||||||
else:
|
else:
|
||||||
|
print "CACA",request
|
||||||
self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder)
|
self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder)
|
||||||
self.init(self.jsonrequest.get("params", {}))
|
self.init(self.jsonrequest.get("params", {}))
|
||||||
if _logger.isEnabledFor(logging.DEBUG):
|
if _logger.isEnabledFor(logging.DEBUG):
|
||||||
|
|
|
@ -291,7 +291,7 @@ class Service(object):
|
||||||
"""
|
"""
|
||||||
self.connector = connector
|
self.connector = connector
|
||||||
self.service_name = service_name
|
self.service_name = service_name
|
||||||
self.__logger = _getChildLogger(_getChildLogger(_logger, 'service'),service_name)
|
self.__logger = _getChildLogger(_getChildLogger(_logger, 'service'),service_name or "")
|
||||||
|
|
||||||
def __getattr__(self, method):
|
def __getattr__(self, method):
|
||||||
"""
|
"""
|
||||||
|
@ -407,7 +407,7 @@ class Model(object):
|
||||||
"""
|
"""
|
||||||
self.connection = connection
|
self.connection = connection
|
||||||
self.model_name = model_name
|
self.model_name = model_name
|
||||||
self.__logger = _getChildLogger(_getChildLogger(_logger, 'object'), model_name)
|
self.__logger = _getChildLogger(_getChildLogger(_logger, 'object'), model_name or "")
|
||||||
|
|
||||||
def __getattr__(self, method):
|
def __getattr__(self, method):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -1123,6 +1123,7 @@ openerp.web.EmbeddedClient = openerp.web.Widget.extend({
|
||||||
});
|
});
|
||||||
|
|
||||||
openerp.web.embed = function (origin, dbname, login, key, action, options) {
|
openerp.web.embed = function (origin, dbname, login, key, action, options) {
|
||||||
|
// TODO insert <link rel="stylesheet" href="origin +'/web/webclient/css'"> into dom head
|
||||||
var currentScript = document.currentScript;
|
var currentScript = document.currentScript;
|
||||||
if (!currentScript) {
|
if (!currentScript) {
|
||||||
var sc = document.getElementsByTagName('script');
|
var sc = document.getElementsByTagName('script');
|
||||||
|
@ -1130,10 +1131,11 @@ openerp.web.embed = function (origin, dbname, login, key, action, options) {
|
||||||
}
|
}
|
||||||
openerp.connection.bind(origin).then(function () {
|
openerp.connection.bind(origin).then(function () {
|
||||||
openerp.connection.session_authenticate(dbname, login, key).then(function () {
|
openerp.connection.session_authenticate(dbname, login, key).then(function () {
|
||||||
var client = new session.web.EmbeddedClient(action_id, options);
|
var client = new openerp.web.EmbeddedClient(action, options);
|
||||||
client.insertAfter(currentScript);
|
client.insertAfter(currentScript);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -480,7 +480,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
|
||||||
}, url);
|
}, url);
|
||||||
var payload_str = JSON.stringify(payload);
|
var payload_str = JSON.stringify(payload);
|
||||||
var payload_url = $.param({r:payload_str});
|
var payload_url = $.param({r:payload_str});
|
||||||
if(playload_url.length < 2000) {
|
if(payload_url.length < 2000) {
|
||||||
// Direct jsonp request
|
// Direct jsonp request
|
||||||
ajax.data.r = payload_str;
|
ajax.data.r = payload_str;
|
||||||
return $.ajax(ajax);
|
return $.ajax(ajax);
|
||||||
|
|
Loading…
Reference in New Issue