Improve PostgreSQL error handling
Re-raise a DbConnectionError if the connection raises an error.
This commit is contained in:
parent
0f9a6d57bf
commit
457722811d
@ -343,6 +343,23 @@ class PythonUpgradeRequiredError(Exception):
|
|||||||
'db_python_version': self.db_python_version,
|
'db_python_version': self.db_python_version,
|
||||||
'current_python_version': self.current_python_version }
|
'current_python_version': self.current_python_version }
|
||||||
|
|
||||||
|
class DbConnectionError(Exception):
|
||||||
|
"""
|
||||||
|
Error used to report that a database connection failed.
|
||||||
|
"""
|
||||||
|
def __init__(self, msg, settings_file):
|
||||||
|
Exception.__init__(self)
|
||||||
|
self.msg = msg
|
||||||
|
self.settings_file = settings_file
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return _('Database connection failed.\n\n'
|
||||||
|
'%(message)s\n'
|
||||||
|
'Please check your connection settings file:\n'
|
||||||
|
'%(settings_file)s') % {
|
||||||
|
'message': self.msg,
|
||||||
|
'settings_file': self.settings_file}
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
"""
|
"""
|
||||||
Call this from the CLI (in order to find the imported modules):
|
Call this from the CLI (in order to find the imported modules):
|
||||||
|
@ -65,7 +65,8 @@ from gramps.gen.db.exceptions import (DbUpgradeRequiredError,
|
|||||||
BsddbUpgradeRequiredError,
|
BsddbUpgradeRequiredError,
|
||||||
BsddbDowngradeRequiredError,
|
BsddbDowngradeRequiredError,
|
||||||
PythonUpgradeRequiredError,
|
PythonUpgradeRequiredError,
|
||||||
PythonDowngradeError)
|
PythonDowngradeError,
|
||||||
|
DbConnectionError)
|
||||||
from .pluginmanager import GuiPluginManager
|
from .pluginmanager import GuiPluginManager
|
||||||
from .dialog import (DBErrorDialog, ErrorDialog, QuestionDialog2,
|
from .dialog import (DBErrorDialog, ErrorDialog, QuestionDialog2,
|
||||||
WarningDialog)
|
WarningDialog)
|
||||||
@ -278,6 +279,9 @@ class DbLoader(CLIDbLoader):
|
|||||||
except PythonDowngradeError as msg:
|
except PythonDowngradeError as msg:
|
||||||
self.dbstate.no_database()
|
self.dbstate.no_database()
|
||||||
self._warn( _("Cannot open database"), str(msg))
|
self._warn( _("Cannot open database"), str(msg))
|
||||||
|
except DbConnectionError as msg:
|
||||||
|
self.dbstate.no_database()
|
||||||
|
self._warn(_("Cannot open database"), str(msg))
|
||||||
except OSError as msg:
|
except OSError as msg:
|
||||||
self.dbstate.no_database()
|
self.dbstate.no_database()
|
||||||
self._errordialog(
|
self._errordialog(
|
||||||
|
@ -41,6 +41,7 @@ from gramps.plugins.db.dbapi.dbapi import DBAPI
|
|||||||
from gramps.gen.utils.configmanager import ConfigManager
|
from gramps.gen.utils.configmanager import ConfigManager
|
||||||
from gramps.gen.config import config
|
from gramps.gen.config import config
|
||||||
from gramps.gen.db.dbconst import ARRAYSIZE
|
from gramps.gen.db.dbconst import ARRAYSIZE
|
||||||
|
from gramps.gen.db.exceptions import DbConnectionError
|
||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
_ = glocale.translation.gettext
|
_ = glocale.translation.gettext
|
||||||
|
|
||||||
@ -91,7 +92,10 @@ class PostgreSQL(DBAPI):
|
|||||||
for key in config_mgr.get_section_settings('database'):
|
for key in config_mgr.get_section_settings('database'):
|
||||||
dbkwargs[key] = config_mgr.get('database.' + key)
|
dbkwargs[key] = config_mgr.get('database.' + key)
|
||||||
|
|
||||||
self.dbapi = Connection(**dbkwargs)
|
try:
|
||||||
|
self.dbapi = Connection(**dbkwargs)
|
||||||
|
except psycopg2.OperationalError as msg:
|
||||||
|
raise DbConnectionError(str(msg), config_file)
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user