forked from openlp/openlp
- Actually fixed the missing DB bug.
This commit is contained in:
parent
0887ca6645
commit
340b2f3298
@ -177,6 +177,40 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication):
|
|||||||
self.shared_memory.create(1)
|
self.shared_memory.create(1)
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def is_data_path_missing(self):
|
||||||
|
"""
|
||||||
|
Check if the data folder path exists.
|
||||||
|
"""
|
||||||
|
data_folder_path = AppLocation.get_data_path()
|
||||||
|
if not os.path.exists(data_folder_path):
|
||||||
|
log.critical('Database was not found in: {path}'.format(path=data_folder_path))
|
||||||
|
status = QtWidgets.QMessageBox.critical(None, translate('OpenLP', 'Data Directory Error'),
|
||||||
|
translate('OpenLP', 'OpenLP data folder was not found in:\n\n{path}'
|
||||||
|
'\n\nThe location of the data folder was '
|
||||||
|
'previously changed from the OpenLP\'s\n'
|
||||||
|
'default location. If the data was stored on '
|
||||||
|
'removable device, that device\nneeds to be '
|
||||||
|
'made available.\n\n You may reset the data '
|
||||||
|
'location back to the default settings, '
|
||||||
|
'or you can try to make the current location '
|
||||||
|
'available.\n\n Do you want to reset the '
|
||||||
|
'default data location?\n\n Click "No" to close'
|
||||||
|
'OpenLP so you can try to fix the the problem.'
|
||||||
|
'\n Click "Yes" to reset the default data '
|
||||||
|
'location and start OpenLP.')
|
||||||
|
.format(path=data_folder_path),
|
||||||
|
QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes |
|
||||||
|
QtWidgets.QMessageBox.No),
|
||||||
|
QtWidgets.QMessageBox.No)
|
||||||
|
if status == QtWidgets.QMessageBox.No:
|
||||||
|
# If answer was "No", return "True", it will shutdown OpenLP in def main
|
||||||
|
log.info('User requested termination')
|
||||||
|
return True
|
||||||
|
# If answer was "Yes", remove the custom data path thus resetting the default location.
|
||||||
|
Settings().remove('advanced/data path')
|
||||||
|
log.info('Database location has been reset to the default settings.')
|
||||||
|
return False
|
||||||
|
|
||||||
def hook_exception(self, exc_type, value, traceback):
|
def hook_exception(self, exc_type, value, traceback):
|
||||||
"""
|
"""
|
||||||
Add an exception hook so that any uncaught exceptions are displayed in this window rather than somewhere where
|
Add an exception hook so that any uncaught exceptions are displayed in this window rather than somewhere where
|
||||||
@ -202,6 +236,7 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication):
|
|||||||
"""
|
"""
|
||||||
data_version = Settings().value('core/application version')
|
data_version = Settings().value('core/application version')
|
||||||
openlp_version = get_application_version()['version']
|
openlp_version = get_application_version()['version']
|
||||||
|
data_folder_path = AppLocation.get_data_path()
|
||||||
# New installation, no need to create backup
|
# New installation, no need to create backup
|
||||||
if not has_run_wizard:
|
if not has_run_wizard:
|
||||||
Settings().setValue('core/application version', openlp_version)
|
Settings().setValue('core/application version', openlp_version)
|
||||||
@ -213,7 +248,6 @@ class OpenLP(OpenLPMixin, QtWidgets.QApplication):
|
|||||||
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
|
QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No,
|
||||||
QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes:
|
QtWidgets.QMessageBox.Yes) == QtWidgets.QMessageBox.Yes:
|
||||||
# Create copy of data folder
|
# Create copy of data folder
|
||||||
data_folder_path = AppLocation.get_data_path()
|
|
||||||
timestamp = time.strftime("%Y%m%d-%H%M%S")
|
timestamp = time.strftime("%Y%m%d-%H%M%S")
|
||||||
data_folder_backup_path = data_folder_path + '-' + timestamp
|
data_folder_backup_path = data_folder_path + '-' + timestamp
|
||||||
try:
|
try:
|
||||||
@ -368,8 +402,8 @@ def main(args=None):
|
|||||||
Registry.create()
|
Registry.create()
|
||||||
Registry().register('application', application)
|
Registry().register('application', application)
|
||||||
application.setApplicationVersion(get_application_version()['version'])
|
application.setApplicationVersion(get_application_version()['version'])
|
||||||
# Instance check
|
# If user answers "No" to already running or missing db dialogue, shutdown OpenLP.
|
||||||
if application.is_already_running():
|
if application.is_already_running() or application.is_data_path_missing():
|
||||||
sys.exit()
|
sys.exit()
|
||||||
# Remove/convert obsolete settings.
|
# Remove/convert obsolete settings.
|
||||||
Settings().remove_obsolete_settings()
|
Settings().remove_obsolete_settings()
|
||||||
|
@ -79,7 +79,6 @@ def handle_db_error(plugin_name, db_file_name):
|
|||||||
"""
|
"""
|
||||||
Log and report to the user that a database cannot be loaded
|
Log and report to the user that a database cannot be loaded
|
||||||
|
|
||||||
:param self:
|
|
||||||
:param plugin_name: Name of plugin
|
:param plugin_name: Name of plugin
|
||||||
:param db_file_name: File name of database
|
:param db_file_name: File name of database
|
||||||
:return: None
|
:return: None
|
||||||
|
@ -397,36 +397,6 @@ class AdvancedTab(SettingsTab):
|
|||||||
self.data_directory_cancel_button.hide()
|
self.data_directory_cancel_button.hide()
|
||||||
# Since data location can be changed, make sure the path is present.
|
# Since data location can be changed, make sure the path is present.
|
||||||
self.current_data_path = AppLocation.get_data_path()
|
self.current_data_path = AppLocation.get_data_path()
|
||||||
if not os.path.exists(self.current_data_path):
|
|
||||||
log.error('Data path not found {path}'.format(path=self.current_data_path))
|
|
||||||
answer = QtWidgets.QMessageBox.critical(
|
|
||||||
self, translate('OpenLP.AdvancedTab', 'Data Directory Error'),
|
|
||||||
translate('OpenLP.AdvancedTab', 'OpenLP data folder was not found in:\n\n{path}\n\n'
|
|
||||||
'The location of the data folder was previously changed from the OpenLP\'s\n'
|
|
||||||
'default location. If the data was stored on removable device, that device\nneeds to '
|
|
||||||
'be made available.\n\n You may reset the data location '
|
|
||||||
'back to the default settings, or you can try to make the current '
|
|
||||||
'location available.\n\n'
|
|
||||||
'Do you want to reset the default data location?\n\n'
|
|
||||||
'If you click "No" you can try to fix the the problem.\n'
|
|
||||||
'If you click "Yes" the data will be reset to the default location. \n\n'
|
|
||||||
'You will need to re-start OpenLP after this decision.').format(path=self.current_data_path),
|
|
||||||
QtWidgets.QMessageBox.StandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No),
|
|
||||||
QtWidgets.QMessageBox.No)
|
|
||||||
if answer == QtWidgets.QMessageBox.No:
|
|
||||||
log.info('User requested termination')
|
|
||||||
# self.main_window.clean_up() is causing tracebacks, not sure if it's required in some cases.
|
|
||||||
try:
|
|
||||||
self.main_window.clean_up()
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
sys.exit()
|
|
||||||
# If answer was yes, Set data location to default and shut down OpenLP.
|
|
||||||
if answer == QtWidgets.QMessageBox.Yes:
|
|
||||||
settings.remove('advanced/data path')
|
|
||||||
self.current_data_path = AppLocation.get_data_path()
|
|
||||||
log.warning('User requested data path set to default {path}'.format(path=self.current_data_path))
|
|
||||||
sys.exit()
|
|
||||||
self.data_directory_label.setText(os.path.abspath(self.current_data_path))
|
self.data_directory_label.setText(os.path.abspath(self.current_data_path))
|
||||||
# Don't allow data directory move if running portable.
|
# Don't allow data directory move if running portable.
|
||||||
if settings.value('advanced/is portable'):
|
if settings.value('advanced/is portable'):
|
||||||
|
Loading…
Reference in New Issue
Block a user