[imp] Modifier rpc calls to handle correctly the promises.
bzr revid: nicolas.vanhoren@openerp.com-20110629100109-m9z598dy2rqy8pn3
This commit is contained in:
@@ -361,12 +361,21 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b
|
||||
error_callback = typeof(error_callback) != "undefined" ? error_callback : this.on_rpc_error;
|
||||
|
||||
// Call using the rpc_mode
|
||||
return this.rpc_ajax(url, {
|
||||
var deferred = $.Deferred();
|
||||
this.rpc_ajax(url, {
|
||||
jsonrpc: "2.0",
|
||||
method: "call",
|
||||
params: params,
|
||||
id:null
|
||||
}, success_callback, error_callback);
|
||||
}).then(function () {deferred.resolve.apply(deferred, arguments);},
|
||||
function(error) {deferred.reject(error, $.Event());});
|
||||
return deferred.then(success_callback, function(error, event) {
|
||||
deferred.fail(function(error2, event2) {
|
||||
if (!event.isDefaultPrevented()) {
|
||||
error_callback(error2, event2);
|
||||
}
|
||||
});
|
||||
}).promise();
|
||||
},
|
||||
/**
|
||||
* Raw JSON-RPC call
|
||||
@@ -388,33 +397,35 @@ openerp.base.Session = openerp.base.BasicController.extend( /** @lends openerp.b
|
||||
dataType: 'json',
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(payload),
|
||||
processData: false,
|
||||
success: function(response, textStatus, jqXHR) {
|
||||
processData: false
|
||||
}, url);
|
||||
var deferred = $.Deferred();
|
||||
$.ajax(ajax).done(function(response, textStatus, jqXHR) {
|
||||
self.on_rpc_response();
|
||||
if (response.error) {
|
||||
if (response.error.data.type == "session_invalid") {
|
||||
self.uid = false;
|
||||
self.on_session_invalid(function() {
|
||||
self.rpc(url, payload.params, success_callback, error_callback);
|
||||
self.rpc(url, payload.params,
|
||||
function() {deferred.resolve.apply(deferred, arguments);},
|
||||
function() {deferred.reject.apply(deferred, arguments);});
|
||||
});
|
||||
} else {
|
||||
error_callback(response.error);
|
||||
deferred.reject(response.error);
|
||||
}
|
||||
} else if (success_callback) {
|
||||
success_callback(response["result"], textStatus, jqXHR);
|
||||
} else {
|
||||
deferred.resolve(response["result"], textStatus, jqXHR);
|
||||
}
|
||||
},
|
||||
error: function(jqXHR, textStatus, errorThrown) {
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
self.on_rpc_response();
|
||||
var error = {
|
||||
code: -32098,
|
||||
message: "XmlHttpRequestError " + errorThrown,
|
||||
data: {type: "xhr"+textStatus, debug: jqXHR.responseText, objects: [jqXHR, errorThrown] }
|
||||
};
|
||||
error_callback(error);
|
||||
}
|
||||
}, url);
|
||||
return $.ajax(ajax);
|
||||
deferred.reject(error);
|
||||
});
|
||||
return deferred.promise().then(success_callback, error_callback);
|
||||
},
|
||||
on_rpc_request: function() {
|
||||
},
|
||||
|
||||
@@ -1267,7 +1267,8 @@ openerp.base.form.FieldMany2One = openerp.base.form.Field.extend({
|
||||
var dataset = new openerp.base.DataSetStatic(this.session, this.field.relation, build_relation_context(self));
|
||||
dataset.name_create(name, function(data) {
|
||||
self._change_int_ext_value(data.result);
|
||||
}).fail(function() {
|
||||
}).fail(function(error, event) {
|
||||
event.preventDefault();
|
||||
self._change_int_value(null);
|
||||
self._search_create_popup("form", undefined, {"default_name": name});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user