[FIX] Handled exception when dropping a database.

bzr revid: noz@tinyerp.com-20110704131838-lf4x944os5ynuy0u
This commit is contained in:
noz (OpenERP)
2011-07-04 18:48:38 +05:30
parent 38340f448d
commit 9d77bed1ca
3 changed files with 28 additions and 19 deletions
+2 -6
View File
@@ -12,6 +12,7 @@ import openerpweb.ast
import openerpweb.nonliterals
import cherrypy
import xmlrpclib
# Should move to openerpweb.Xml2Json
class Xml2Json:
@@ -126,12 +127,7 @@ class Session(openerpweb.Controller):
if flag == 'drop':
db = kw.get('db')
password = kw.get('password')
try:
res = req.session.proxy("db").drop(password, db)
if res:
return res
except TypeError:
return {'error': e}
return req.session.proxy("db").drop(password, db)
@openerpweb.jsonrequest
def modules(self, req):
+6 -4
View File
@@ -880,8 +880,8 @@ openerp.base.CrashManager = openerp.base.Dialog.extend({
this.dialog_title = "OpenERP Error";
this.template = 'DialogTraceback';
this.open({
width: '80%',
height: '80%'
width: 'auto',
height: 'auto'
});
}
}
@@ -946,8 +946,10 @@ openerp.base.Database = openerp.base.Controller.extend({
if (confirm("Do you really want to delete the database: " + db + " ?")) {
self.rpc("/base/session/db_operation", {'flag': 'drop', 'db': db, 'password': password},
function(result) {
self.$option_id.find("select[name=drop_db] :selected").remove();
self.notification.notify("Dropping database", "The database '" + db + "' has been dropped");
if (!result.error) {
self.$option_id.find("select[name=drop_db] :selected").remove();
self.notification.notify("Dropping database", "The database '" + db + "' has been dropped");
}
});
}
});
+20 -9
View File
@@ -317,16 +317,27 @@ class JsonRequest(object):
}
}
except xmlrpclib.Fault, e:
error = {
'code': 200,
'message': "OpenERP Server Error",
'data': {
'type': 'server_exception',
'fault_code': e.faultCode,
'debug': "Client %s\nServer %s" % (
"".join(traceback.format_exception("", None, sys.exc_traceback)), e.faultString)
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
message, string = e.faultCode.split(':')
error = {
'code': 200,
'message': message,
'data': {
'type': 'server_exception',
'debug': string
}
}
else:
error = {
'code': 200,
'message': "OpenERP Server Error",
'data': {
'type': 'server_exception',
'fault_code': e.faultCode,
'debug': "Client %s\nServer %s" % (
"".join(traceback.format_exception("", None, sys.exc_traceback)), e.faultString)
}
}
}
except Exception:
cherrypy.log("An error occured while handling a json request",
severity=logging.ERROR, traceback=True)