[FIX] Update code for exception handling.

bzr revid: noz@tinyerp.com-20110726082002-r5j6cbzzz4lyitzj
This commit is contained in:
noz (OpenERP) 2011-07-26 13:50:02 +05:30
parent 01ae186bec
commit a5476e9749
2 changed files with 23 additions and 29 deletions

View File

@ -56,9 +56,6 @@ class Xml2Json:
# OpenERP Web base Controllers # OpenERP Web base Controllers
#---------------------------------------------------------- #----------------------------------------------------------
class DatabaseCreationError(Exception): pass
class DatabaseCreationCrash(DatabaseCreationError): pass
class Database(openerpweb.Controller): class Database(openerpweb.Controller):
_cp_path = "/base/database" _cp_path = "/base/database"
@ -88,25 +85,9 @@ class Database(openerpweb.Controller):
ok = False ok = False
try: try:
return req.session.proxy("db").create(super_admin_pwd, dbname, demo_data, db_lang, admin_pwd) return req.session.proxy("db").create(super_admin_pwd, dbname, demo_data, db_lang, admin_pwd)
# while True:
# try:
# progress, users = req.session.proxy('db').get_progress(super_admin_pwd, res)
# if progress == 1.0:
# for x in users:
# if x['login'] == 'admin':
# req.session.login(dbname, 'admin', x['password'])
# ok = True
# break
# else:
# time.sleep(1)
# except:
# raise DatabaseCreationCrash()
# except DatabaseCreationCrash:
# return {'error': "The server crashed during installation.\nWe suggest you to drop this database.",
# 'title': 'Error during database creation'}
except Exception, e: except Exception, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': 'Bad super admin password !', 'title': 'Create Database'} return {'error': e.faultCode, 'title': 'Create Database'}
else: else:
return {'error': 'Could not create database !', 'title': 'Create Database'} return {'error': 'Could not create database !', 'title': 'Create Database'}
@ -119,7 +100,7 @@ class Database(openerpweb.Controller):
return req.session.proxy("db").drop(password, db) return req.session.proxy("db").drop(password, db)
except Exception, e: except Exception, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': 'Bad super admin password !', 'title': 'Drop Database'} return {'error': e.faultCode, 'title': 'Drop Database'}
else: else:
return {'error': 'Could not drop database !', 'title': 'Drop Database'} return {'error': 'Could not drop database !', 'title': 'Drop Database'}
@ -135,7 +116,7 @@ class Database(openerpweb.Controller):
return base64.decodestring(res) return base64.decodestring(res)
except Exception, e: except Exception, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': 'Bad super admin password !', 'title': 'Backup Database'} return {'error': e.faultCode, 'title': 'Backup Database'}
else: else:
return {'error': 'Could not drop database !', 'title': 'Backup Database'} return {'error': 'Could not drop database !', 'title': 'Backup Database'}
@ -150,7 +131,7 @@ class Database(openerpweb.Controller):
return req.session.proxy("db").restore(password, db, data) return req.session.proxy("db").restore(password, db, data)
except Exception, e: except Exception, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': 'Bad super admin password !', 'title': 'Restore Database'} return {'error': e.faultCode, 'title': 'Restore Database'}
else: else:
return {'error': 'Could not restore database !', 'title': 'Restore Database'} return {'error': 'Could not restore database !', 'title': 'Restore Database'}
@ -164,7 +145,7 @@ class Database(openerpweb.Controller):
return req.session.proxy("db").change_admin_password(old_password, new_password) return req.session.proxy("db").change_admin_password(old_password, new_password)
except Exception, e: except Exception, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied': if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': 'Bad super admin password !', 'title': 'Change Password'} return {'error': e.faultCode, 'title': 'Change Password'}
else: else:
return {'error': 'Error, password not changed !', 'title': 'Change Password'} return {'error': 'Error, password not changed !', 'title': 'Change Password'}
@ -222,8 +203,8 @@ class Session(openerpweb.Controller):
try: try:
lang_list = lang_list + (req.session.proxy("db").list_lang() or []) lang_list = lang_list + (req.session.proxy("db").list_lang() or [])
except Exception, e: except Exception, e:
pass return {"error": e, "title": "Languages"}
return {"lang_list": lang_list} return {"lang_list": lang_list, "error": ""}
@openerpweb.jsonrequest @openerpweb.jsonrequest
def modules(self, req): def modules(self, req):

View File

@ -709,8 +709,21 @@ openerp.base.Database = openerp.base.Controller.extend({
}); });
this.rpc("/base/session/get_lang_list", {}, function(result) { this.rpc("/base/session/get_lang_list", {}, function(result) {
self.lang_list = result.lang_list; if (!result.error) {
self.do_db_create(); self.lang_list = result.lang_list;
self.do_db_create();
} else {
var db_error_dialog = _.uniqueId("db_error_dialog");
$('<div>', {id: db_error_dialog}).dialog({
modal: true,
title: result.title,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
}).html("<center style='padding-top: 15px; font-size: 15px'>" + result.error + "</center>");
}
}); });
this.$element.find('#db-create').click(this.do_db_create); this.$element.find('#db-create').click(this.do_db_create);
@ -766,7 +779,7 @@ openerp.base.Database = openerp.base.Controller.extend({
function(result) { function(result) {
if (result && !result.error) { if (result && !result.error) {
} else if(result.error) { } else if(result.error) {
var db_error_dialog = _.uniqueId("db_error_dialog"); var db_error_dialog = _.uniqueId("db_error_dialog");
$('<div>', {id: db_error_dialog}).dialog({ $('<div>', {id: db_error_dialog}).dialog({
modal: true, modal: true,