Files
gramps/gramps/gen/db/exceptions.py

226 lines
8.7 KiB
Python

#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2004-2005 Donald N. Allingham
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
"""Exceptions generated by the Db package."""
#-------------------------------------------------------------------------
#
# Gramps modules
#
#-------------------------------------------------------------------------
from ..const import URL_WIKISTRING, URL_MANUAL_PAGE
from ..const import GRAMPS_LOCALE as glocale
_ = glocale.translation.gettext
#-------------------------------------------------------------------------
#
# Constants
#
#-------------------------------------------------------------------------
URL_WIKI_START = '<a href="' + URL_WIKISTRING
URL_MANUAL_START = URL_WIKI_START + URL_MANUAL_PAGE + '_-_Manage_Family_Trees'
URL_BACKUP1_START = URL_WIKI_START + 'How_to_make_a_backup">'
URL_BACKUP2_START = URL_MANUAL_START + '#Backing_up_a_Family_Tree">'
URL_EXPORT_START = URL_MANUAL_START + '#Export_into_Gramps_formats">'
class DbException(Exception):
def __init__(self, value):
Exception.__init__(self)
self.value = value
def __str__(self):
return self.value
class DbWriteFailure(Exception):
"""
Error used to indicate that a write to a database has failed.
"""
def __init__(self, value, value2=""):
Exception.__init__(self)
self.value = value
self.value2 = value2
def __str__(self):
return self.value
def messages(self):
return self.value, self.value2
class DbTransactionCancel(Exception):
"""
Error used to indicate that a transaction needs to be canceled,
for example becuase it is lengthy and the users requests so.
"""
def __init__(self, value):
Exception.__init__(self)
self.value = value
def __str__(self):
return self.value
class DbVersionError(Exception):
"""
Error used to report that a file could not be read because it is written
in an unsupported version of the file format.
"""
def __init__(self, tree_vers, min_vers, max_vers):
Exception.__init__(self)
self.tree_vers = tree_vers
self.min_vers = min_vers
self.max_vers = max_vers
def __str__(self):
return _('The schema version is not supported by this version of '
'Gramps.\n\n'
'This Family Tree is schema version %(tree_vers)s, and this '
'version of Gramps supports versions %(min_vers)s to '
'%(max_vers)s\n\n'
'Please upgrade to the corresponding version or use '
'XML for porting data between different schema versions.') %\
{'tree_vers': self.tree_vers,
'min_vers': self.min_vers,
'max_vers': self.max_vers}
class DbPythonError(Exception):
"""
Error used to report that a file could not be read because it is written
in an unsupported version of the Python format.
"""
def __init__(self, tree_vers, min_vers, max_vers):
Exception.__init__(self)
self.tree_vers = tree_vers
self.min_vers = min_vers
self.max_vers = max_vers
def __str__(self):
return _('The Python version is not supported by this version of '
'Gramps.\n\n'
'This Family Tree is Python version %(tree_vers)s, and this '
'version of Gramps supports versions %(min_vers)s to '
'%(max_vers)s\n\n'
'Please upgrade to the corresponding version or use '
'XML for porting data between different Python versions.') %\
{'tree_vers': self.tree_vers,
'min_vers': self.min_vers,
'max_vers': self.max_vers}
class DbUpgradeRequiredError(Exception):
"""
Error used to report that a database needs to be upgraded before it can be
used.
"""
def __init__(self, oldschema, newschema):
Exception.__init__(self)
self.oldschema = oldschema
self.newschema = newschema
def __str__(self):
return _('The Family Tree you are trying to load is in the schema '
'version %(oldschema)s format. This version of Gramps uses '
'schema version %(newschema)s. Therefore you cannot load this '
'Family Tree without upgrading the schema version of the '
'Family Tree.\n\n'
'If you upgrade then you won\'t be able to use the previous '
'version of Gramps, even if you subsequently '
'%(wiki_manual_backup_html_start)sbackup%(html_end)s or '
'%(wiki_manual_export_html_start)sexport%(html_end)s '
'your upgraded Family Tree.\n\n'
'Upgrading is a difficult task which could irretrievably '
'corrupt your Family Tree if it is interrupted or fails.\n\n'
'If you have not already made a backup of your Family Tree, '
'then you should start your %(bold_start)sold%(bold_end)s '
'version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree.') % {
'wiki_backup_html_start' : URL_BACKUP1_START ,
'wiki_manual_backup_html_start' : URL_BACKUP2_START ,
'wiki_manual_export_html_start' : URL_EXPORT_START ,
'html_end' : '</a>' ,
'bold_start' : '<b>' ,
'bold_end' : '</b>' ,
'oldschema' : self.oldschema,
'newschema' : self.newschema }
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}
class DbSupportedError(Exception):
"""
Error used to report that a database is no longer supported.
"""
def __init__(self, msg):
Exception.__init__(self)
self.msg = msg
def __str__(self):
return _('The Family Tree you are trying to load is in the %(dbtype)s '
'database, which is no longer supported.\nTherefore you '
'cannot load this Family Tree without upgrading.\n\n'
'If you upgrade then you won\'t be able to use the previous '
'version of Gramps, even if you subsequently '
'%(wiki_manual_backup_html_start)sbackup%(html_end)s or '
'%(wiki_manual_export_html_start)sexport%(html_end)s '
'your upgraded Family Tree.\n\n'
'You are strongly advised to backup your Family Tree.\n\n'
'If you have not already made a backup of your Family Tree, '
'then you should start your previous version of Gramps and '
'%(wiki_backup_html_start)smake a backup%(html_end)s '
'of your Family Tree.') % {
'dbtype' : self.msg,
'wiki_manual_backup_html_start' : URL_BACKUP2_START ,
'wiki_manual_export_html_start' : URL_EXPORT_START ,
'wiki_backup_html_start' : URL_BACKUP1_START ,
'html_end' : '</a>'}
if __name__ == "__main__":
"""
Call this from the CLI (in order to find the imported modules):
cd /path/to/gramps; GRAMPS_RESOURCES=. ; PYTHONPATH=.
python gramps/gen/db/exceptions.py
"""
import sys
print("\nDbVersionError:\n",
DbVersionError('1.6.0', '1.5.0', '1.5.1'))
print("\nDbUpgradeRequiredError:\n",
DbUpgradeRequiredError('1.5.1', '1.6.0'))
sys.exit(0)
print("\nxxx:\n",
xxx('4.8.30', '4.8.29'))