diff --git a/addons/base/controllers/main.py b/addons/base/controllers/main.py index 56328489a5b..cfc463e031c 100644 --- a/addons/base/controllers/main.py +++ b/addons/base/controllers/main.py @@ -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): diff --git a/addons/base/static/src/js/chrome.js b/addons/base/static/src/js/chrome.js index 7e19d138ff0..62d9b9c92c1 100644 --- a/addons/base/static/src/js/chrome.js +++ b/addons/base/static/src/js/chrome.js @@ -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"); + } }); } }); diff --git a/openerpweb/openerpweb.py b/openerpweb/openerpweb.py index 33c5c14edb3..8a759bd9b82 100644 --- a/openerpweb/openerpweb.py +++ b/openerpweb/openerpweb.py @@ -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)