[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
|
||||
"""
|
||||
args = self.httprequest.args
|
||||
jsonp = args.get('jsonp', False)
|
||||
jsonp = args.get('jsonp')
|
||||
requestf = None
|
||||
request = None
|
||||
print "ARGS",args
|
||||
|
||||
if jsonp and self.httprequest.method == 'POST':
|
||||
# jsonp 2 steps step1 POST: save call
|
||||
|
@ -149,13 +150,13 @@ class JsonRequest(WebRequest):
|
|||
headers=[('Content-Type', 'text/plain; charset=utf-8')]
|
||||
r = werkzeug.wrappers.Response(request_id, headers=headers)
|
||||
return r
|
||||
elif jsonp and args.get('r'):
|
||||
# jsonp method GET
|
||||
request = args.get('r')
|
||||
elif jsonp and args.get('id'):
|
||||
# jsonp 2 steps step2 GET: run and return result
|
||||
self.init(args)
|
||||
request = self.session.jsonp_requests.pop(args.get(id), "")
|
||||
elif jsonp and args.get('r'):
|
||||
# jsonp method GET
|
||||
request = args.get('r')
|
||||
else:
|
||||
# regular jsonrpc2
|
||||
requestf = self.httprequest.stream
|
||||
|
@ -167,6 +168,7 @@ class JsonRequest(WebRequest):
|
|||
if requestf:
|
||||
self.jsonrequest = simplejson.load(requestf, object_hook=nonliterals.non_literal_decoder)
|
||||
else:
|
||||
print "CACA",request
|
||||
self.jsonrequest = simplejson.loads(request, object_hook=nonliterals.non_literal_decoder)
|
||||
self.init(self.jsonrequest.get("params", {}))
|
||||
if _logger.isEnabledFor(logging.DEBUG):
|
||||
|
|
|
@ -291,7 +291,7 @@ class Service(object):
|
|||
"""
|
||||
self.connector = connector
|
||||
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):
|
||||
"""
|
||||
|
@ -407,7 +407,7 @@ class Model(object):
|
|||
"""
|
||||
self.connection = connection
|
||||
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):
|
||||
"""
|
||||
|
|
|
@ -1123,6 +1123,7 @@ openerp.web.EmbeddedClient = openerp.web.Widget.extend({
|
|||
});
|
||||
|
||||
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;
|
||||
if (!currentScript) {
|
||||
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.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);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -480,7 +480,7 @@ openerp.web.Connection = openerp.web.CallbackEnabled.extend( /** @lends openerp.
|
|||
}, url);
|
||||
var payload_str = JSON.stringify(payload);
|
||||
var payload_url = $.param({r:payload_str});
|
||||
if(playload_url.length < 2000) {
|
||||
if(payload_url.length < 2000) {
|
||||
// Direct jsonp request
|
||||
ajax.data.r = payload_str;
|
||||
return $.ajax(ajax);
|
||||
|
|
Loading…
Reference in New Issue