move some code

stop moving bibles to subfolders
some fixes
This commit is contained in:
Armin Köhler 2011-05-25 16:18:03 +02:00
parent c51d8182a6
commit 0c83471ee4
7 changed files with 110 additions and 80 deletions

View File

@ -37,8 +37,7 @@ from traceback import format_exception
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
from openlp.core.lib import Receiver, check_directory_exists, SettingsManager, \ from openlp.core.lib import Receiver, check_directory_exists
translate
from openlp.core.lib.ui import UiStrings from openlp.core.lib.ui import UiStrings
from openlp.core.resources import qInitResources from openlp.core.resources import qInitResources
from openlp.core.ui.mainwindow import MainWindow from openlp.core.ui.mainwindow import MainWindow
@ -130,18 +129,7 @@ class OpenLP(QtGui.QApplication):
u'general/update check', QtCore.QVariant(True)).toBool() u'general/update check', QtCore.QVariant(True)).toBool()
if update_check: if update_check:
VersionThread(self.mainWindow).start() VersionThread(self.mainWindow).start()
for plugin in self.mainWindow.pluginManager.plugins: self.mainWindow.appStartup()
if plugin.name == u'Bibles' and plugin.isActive() and not \
len(SettingsManager.get_files( u'bibles/bibles', u'.sqlite')) \
and SettingsManager.get_files(u'bibles', u'.sqlite'):
if QtGui.QMessageBox.information(self.mainWindow,
translate('OpenLP', 'Information'), translate('OpenLP',
'Bible format has changed.\nYou have to upgrade your '
'existing bibles.\nShould OpenLP upgrade now?'),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes:
plugin.onToolsUpgradeItemTriggered()
break
DelayStartThread(self.mainWindow).start() DelayStartThread(self.mainWindow).start()
return self.exec_() return self.exec_()

View File

@ -639,6 +639,15 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
self.setViewMode(False, True, False, False, True) self.setViewMode(False, True, False, False, True)
self.ModeLiveItem.setChecked(True) self.ModeLiveItem.setChecked(True)
def appStartup(self):
# Give all the plugins a chance to perform some tasks at startup
Receiver.send_message(u'openlp_process_events')
for plugin in self.pluginManager.plugins:
if hasattr(plugin, u'appStartup'):
Receiver.send_message(u'openlp_process_events')
plugin.appStartup()
Receiver.send_message(u'openlp_process_events')
def firstTime(self): def firstTime(self):
# Import themes if first time # Import themes if first time
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')

View File

@ -60,7 +60,7 @@ class BiblePlugin(Plugin):
#action_list.add_action(self.exportBibleItem, UiStrings().Export) #action_list.add_action(self.exportBibleItem, UiStrings().Export)
# Set to invisible until we can export bibles # Set to invisible until we can export bibles
self.exportBibleItem.setVisible(False) self.exportBibleItem.setVisible(False)
if SettingsManager.get_files(u'bibles', u'.sqlite'): if len(self.manager.old_bible_databases):
self.toolsUpgradeItem.setVisible(True) self.toolsUpgradeItem.setVisible(True)
def finalise(self): def finalise(self):
@ -76,6 +76,20 @@ class BiblePlugin(Plugin):
#action_list.remove_action(self.exportBibleItem, UiStrings().Export) #action_list.remove_action(self.exportBibleItem, UiStrings().Export)
self.exportBibleItem.setVisible(False) self.exportBibleItem.setVisible(False)
def appStartup(self):
"""
Perform tasks on application starup
"""
if not len(self.manager.db_cache) and \
len(self.manager.old_bible_databases):
if QtGui.QMessageBox.information(self.formparent,
translate('OpenLP', 'Information'), translate('OpenLP',
'Bible format has changed.\nYou have to upgrade your '
'existing bibles.\nShould OpenLP upgrade now?'),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No)) == QtGui.QMessageBox.Yes:
self.onToolsUpgradeItemTriggered()
def addImportMenuItem(self, import_menu): def addImportMenuItem(self, import_menu):
self.importBibleItem = base_action(import_menu, u'importBibleItem') self.importBibleItem = base_action(import_menu, u'importBibleItem')
self.importBibleItem.setText(translate('BiblesPlugin', '&Bible')) self.importBibleItem.setText(translate('BiblesPlugin', '&Bible'))

View File

@ -472,7 +472,7 @@ class BibleImportForm(OpenLPWizard):
license_version = unicode(self.field(u'license_version').toString()) license_version = unicode(self.field(u'license_version').toString())
license_copyright = \ license_copyright = \
unicode(self.field(u'license_copyright').toString()) unicode(self.field(u'license_copyright').toString())
path = AppLocation.get_section_data_path(u'bibles/bibles') path = AppLocation.get_section_data_path(u'bibles')
if not license_version: if not license_version:
critical_error_message_box(UiStrings().EmptyField, critical_error_message_box(UiStrings().EmptyField,
translate('BiblesPlugin.ImportWizardForm', translate('BiblesPlugin.ImportWizardForm',
@ -720,5 +720,5 @@ class BibleImportForm(OpenLPWizard):
self.progressLabel.setText(translate( self.progressLabel.setText(translate(
'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.'))
del self.manager.db_cache[importer.name] del self.manager.db_cache[importer.name]
delete_database(AppLocation.get_section_data_path(u'bibles/bibles'), delete_database(AppLocation.get_section_data_path(u'bibles'),
importer.file) importer.file)

View File

@ -67,18 +67,12 @@ class BibleUpgradeForm(OpenLPWizard):
self.manager = manager self.manager = manager
self.mediaItem = bibleplugin.mediaItem self.mediaItem = bibleplugin.mediaItem
self.suffix = u'.sqlite' self.suffix = u'.sqlite'
self.settingsSection = u'bibles/bibles' self.settingsSection = u'bibles'
self.oldsettingsSection = u'bibles' self.path = AppLocation.get_section_data_path(
self.oldpath = AppLocation.get_section_data_path(
self.oldsettingsSection)
self.newpath = AppLocation.get_section_data_path(
self.settingsSection) self.settingsSection)
self.files = SettingsManager.get_files(self.oldsettingsSection, self.files = self.manager.old_bible_databases
self.suffix)
self.success = {} self.success = {}
self.newbibles = {} self.newbibles = {}
self.maxBibles = len(self.files)
self.stop_import_flag = False
OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleUpgradeWizard', OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleUpgradeWizard',
u':/wizards/wizard_importbible.bmp') u':/wizards/wizard_importbible.bmp')
@ -106,7 +100,8 @@ class BibleUpgradeForm(OpenLPWizard):
self.verticalWidget[number].hide() self.verticalWidget[number].hide()
self.formWidget[number].hide() self.formWidget[number].hide()
else: else:
if os.path.exists(os.path.join(self.newpath, filename)): version_name = unicode(self.versionNameEdit[number].text())
if self.manager.exists(version_name):
self.verticalWidget[number].show() self.verticalWidget[number].show()
self.formWidget[number].show() self.formWidget[number].show()
@ -118,7 +113,7 @@ class BibleUpgradeForm(OpenLPWizard):
if self.currentPage() == self.progressPage: if self.currentPage() == self.progressPage:
Receiver.send_message(u'openlp_stop_wizard') Receiver.send_message(u'openlp_stop_wizard')
for bible in self.newbibles.itervalues(): for bible in self.newbibles.itervalues():
delete_database(self.newpath, clean_filename( delete_database(self.path, clean_filename(
bible.get_name())) bible.get_name()))
self.done(QtGui.QDialog.Rejected) self.done(QtGui.QDialog.Rejected)
@ -139,7 +134,7 @@ class BibleUpgradeForm(OpenLPWizard):
""" """
for number, filename in enumerate(self.files): for number, filename in enumerate(self.files):
if self.success[number]: if self.success[number]:
delete_file(os.path.join(self.oldpath, filename)) delete_file(os.path.join(self.path, filename))
def customInit(self): def customInit(self):
""" """
@ -152,10 +147,6 @@ class BibleUpgradeForm(OpenLPWizard):
""" """
Set up the signals used in the bible importer. Set up the signals used in the bible importer.
""" """
for number, filename in enumerate(self.files):
QtCore.QObject.connect(self.checkBox[number],
QtCore.SIGNAL(u'stateChanged(int)'),
self.onCheckBoxIndexChanged)
QtCore.QObject.connect(self.finishButton, QtCore.QObject.connect(self.finishButton,
QtCore.SIGNAL(u'clicked()'), self.onFinishButton) QtCore.SIGNAL(u'clicked()'), self.onFinishButton)
@ -195,24 +186,24 @@ class BibleUpgradeForm(OpenLPWizard):
self.formWidget = {} self.formWidget = {}
self.formLayoutAttention = {} self.formLayoutAttention = {}
for number, filename in enumerate(self.files): for number, filename in enumerate(self.files):
bible = OldBibleDB(self.mediaItem, path=self.oldpath, file=filename) bible = OldBibleDB(self.mediaItem, path=self.path, file=filename)
self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents) self.checkBox[number] = QtGui.QCheckBox(self.scrollAreaContents)
checkBoxName = u'checkBox['+unicode(number)+u']' checkBoxName = u'checkBox[%d]' % number
self.checkBox[number].setObjectName(checkBoxName) self.checkBox[number].setObjectName(checkBoxName)
self.checkBox[number].setText(bible.get_name()) self.checkBox[number].setText(bible.get_name())
self.checkBox[number].setCheckState(QtCore.Qt.Checked) self.checkBox[number].setCheckState(QtCore.Qt.Checked)
self.formLayout.addWidget(self.checkBox[number]) self.formLayout.addWidget(self.checkBox[number])
self.verticalWidget[number] = QtGui.QWidget(self.scrollAreaContents) self.verticalWidget[number] = QtGui.QWidget(self.scrollAreaContents)
verticalWidgetName = u'verticalWidget['+unicode(number)+u']' verticalWidgetName = u'verticalWidget[%d]' % number
self.verticalWidget[number].setObjectName(verticalWidgetName) self.verticalWidget[number].setObjectName(verticalWidgetName)
self.horizontalLayout[number] = QtGui.QHBoxLayout( self.horizontalLayout[number] = QtGui.QHBoxLayout(
self.verticalWidget[number]) self.verticalWidget[number])
self.horizontalLayout[number].setContentsMargins(25, 0, 0, 0) self.horizontalLayout[number].setContentsMargins(25, 0, 0, 0)
horizontalLayoutName = u'horizontalLayout['+unicode(number)+u']' horizontalLayoutName = u'horizontalLayout[%d]' % number
self.horizontalLayout[number].setObjectName(horizontalLayoutName) self.horizontalLayout[number].setObjectName(horizontalLayoutName)
self.versionInfoPixmap[number] = QtGui.QLabel( self.versionInfoPixmap[number] = QtGui.QLabel(
self.verticalWidget[number]) self.verticalWidget[number])
versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']' versionInfoPixmapName = u'versionInfoPixmap[%d]' % number
self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName) self.versionInfoPixmap[number].setObjectName(versionInfoPixmapName)
self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap( self.versionInfoPixmap[number].setPixmap(QtGui.QPixmap(
u':/bibles/bibles_upgrade_alert.png')) u':/bibles/bibles_upgrade_alert.png'))
@ -221,7 +212,7 @@ class BibleUpgradeForm(OpenLPWizard):
self.versionInfoPixmap[number]) self.versionInfoPixmap[number])
self.versionInfoLabel[number] = QtGui.QLabel( self.versionInfoLabel[number] = QtGui.QLabel(
self.verticalWidget[number]) self.verticalWidget[number])
versionInfoLabelName = u'versionInfoLabel['+unicode(number)+u']' versionInfoLabelName = u'versionInfoLabel[%d]' % number
self.versionInfoLabel[number].setObjectName(versionInfoLabelName) self.versionInfoLabel[number].setObjectName(versionInfoLabelName)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding,
QtGui.QSizePolicy.Preferred) QtGui.QSizePolicy.Preferred)
@ -234,13 +225,12 @@ class BibleUpgradeForm(OpenLPWizard):
self.versionInfoLabel[number]) self.versionInfoLabel[number])
self.formLayout.addWidget(self.verticalWidget[number]) self.formLayout.addWidget(self.verticalWidget[number])
self.formWidget[number] = QtGui.QWidget(self.scrollAreaContents) self.formWidget[number] = QtGui.QWidget(self.scrollAreaContents)
formWidgetName = u'formWidget['+unicode(number)+u']' formWidgetName = u'formWidget[%d]' % number
self.formWidget[number].setObjectName(formWidgetName) self.formWidget[number].setObjectName(formWidgetName)
self.formLayoutAttention[number] = QtGui.QFormLayout( self.formLayoutAttention[number] = QtGui.QFormLayout(
self.formWidget[number]) self.formWidget[number])
self.formLayoutAttention[number].setContentsMargins(25, 0, 0, 5) self.formLayoutAttention[number].setContentsMargins(25, 0, 0, 5)
formLayoutAttentionName = u'formLayoutAttention['+unicode(number)+\ formLayoutAttentionName = u'formLayoutAttention[%d]' % number
u']'
self.formLayoutAttention[number].setObjectName( self.formLayoutAttention[number].setObjectName(
formLayoutAttentionName) formLayoutAttentionName)
self.versionNameLabel[number] = QtGui.QLabel( self.versionNameLabel[number] = QtGui.QLabel(
@ -255,6 +245,10 @@ class BibleUpgradeForm(OpenLPWizard):
QtGui.QFormLayout.FieldRole, self.versionNameEdit[number]) QtGui.QFormLayout.FieldRole, self.versionNameEdit[number])
self.versionNameEdit[number].setText(bible.get_name()) self.versionNameEdit[number].setText(bible.get_name())
self.formLayout.addWidget(self.formWidget[number]) self.formLayout.addWidget(self.formWidget[number])
#Set up the Signal for the checkbox
QtCore.QObject.connect(self.checkBox[number],
QtCore.SIGNAL(u'stateChanged(int)'),
self.onCheckBoxIndexChanged)
self.spacerItem = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum, self.spacerItem = QtGui.QSpacerItem(20, 5, QtGui.QSizePolicy.Minimum,
QtGui.QSizePolicy.Expanding) QtGui.QSizePolicy.Expanding)
self.formLayout.addItem(self.spacerItem) self.formLayout.addItem(self.spacerItem)
@ -329,7 +323,7 @@ class BibleUpgradeForm(OpenLPWizard):
if not self.checkBox[number].checkState() == QtCore.Qt.Checked: if not self.checkBox[number].checkState() == QtCore.Qt.Checked:
continue continue
version_name = unicode(self.versionNameEdit[number].text()) version_name = unicode(self.versionNameEdit[number].text())
oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, oldbible = OldBibleDB(self.mediaItem, path=self.path,
file=filename) file=filename)
oldname = oldbible.get_name() oldname = oldbible.get_name()
if not version_name: if not version_name:
@ -348,18 +342,28 @@ class BibleUpgradeForm(OpenLPWizard):
'uncheck.')) 'uncheck.'))
self.versionNameEdit[number].setFocus() self.versionNameEdit[number].setFocus()
return False return False
elif os.path.exists(os.path.join(self.newpath, filename)) and \ elif os.path.exists(os.path.join(self.path, clean_filename(
version_name == oldname: version_name))) and version_name == oldname:
critical_error_message_box( newfilename = u'old_database_%s' % filename
translate('BiblesPlugin.UpgradeWizardForm', if not os.path.exists(os.path.join(self.path,
newfilename)):
os.rename(os.path.join(self.path, filename),
os.path.join(self.path, newfilename))
self.files[number] = newfilename
continue
else:
critical_error_message_box(
translate('BiblesPlugin.UpgradeWizardForm',
'Bible Exists'), 'Bible Exists'),
translate('BiblesPlugin.UpgradeWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'This Bible already exists. Please upgrade ' 'This Bible already exists. Please upgrade '
'a different Bible, delete the existing one or ' 'a different Bible, delete the existing one or '
'uncheck.')) 'uncheck.'))
self.versionNameEdit[number].setFocus() self.verticalWidget[number].show()
return False self.formWidget[number].show()
elif os.path.exists(os.path.join(self.newpath, self.versionNameEdit[number].setFocus()
return False
elif os.path.exists(os.path.join(self.path,
clean_filename(version_name))): clean_filename(version_name))):
critical_error_message_box( critical_error_message_box(
translate('BiblesPlugin.UpgradeWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
@ -385,15 +389,16 @@ class BibleUpgradeForm(OpenLPWizard):
self.success.clear() self.success.clear()
self.newbibles.clear() self.newbibles.clear()
self.clearScrollArea() self.clearScrollArea()
self.files = SettingsManager.get_files(self.oldsettingsSection, self.files = self.manager.old_bible_databases
self.suffix)
self.addScrollArea() self.addScrollArea()
self.customSignals()
self.retranslateUi() self.retranslateUi()
self.maxBibles = len(self.files) self.maxBibles = len(self.files)
for number, filename in enumerate(self.files): for number, filename in enumerate(self.files):
self.checkBox[number].setCheckState(QtCore.Qt.Checked) self.checkBox[number].setCheckState(QtCore.Qt.Checked)
if os.path.exists(os.path.join(self.newpath, filename)): oldbible = OldBibleDB(self.mediaItem, path=self.path,
file=filename)
oldname = oldbible.get_name()
if self.manager.exists(oldname):
self.verticalWidget[number].show() self.verticalWidget[number].show()
self.formWidget[number].show() self.formWidget[number].show()
else: else:
@ -440,11 +445,11 @@ class BibleUpgradeForm(OpenLPWizard):
if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked: if not self.checkBox[biblenumber].checkState() == QtCore.Qt.Checked:
continue continue
self.progressBar.reset() self.progressBar.reset()
oldbible = OldBibleDB(self.mediaItem, path=self.oldpath, oldbible = OldBibleDB(self.mediaItem, path=self.path,
file=filename) file=filename)
name = oldbible.get_name() name = oldbible.get_name()
if name is None: if name is None:
delete_file(os.path.join(self.oldpath, filename)) delete_file(os.path.join(self.path, filename))
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.UpgradeWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Upgrading Bible %s of %s: "%s"\nFailed')) % 'Upgrading Bible %s of %s: "%s"\nFailed')) %
@ -456,9 +461,9 @@ class BibleUpgradeForm(OpenLPWizard):
'BiblesPlugin.UpgradeWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Upgrading Bible %s of %s: "%s"\nImporting ...')) % 'Upgrading Bible %s of %s: "%s"\nImporting ...')) %
(number + 1, self.maxBibles, name)) (number + 1, self.maxBibles, name))
if os.path.exists(os.path.join(self.newpath, filename)): if os.path.exists(os.path.join(self.path, filename)):
name = unicode(self.versionNameEdit[biblenumber].text()) name = unicode(self.versionNameEdit[biblenumber].text())
self.newbibles[number] = BibleDB(self.mediaItem, path=self.oldpath, self.newbibles[number] = BibleDB(self.mediaItem, path=self.path,
name=name) name=name)
metadata = oldbible.get_metadata() metadata = oldbible.get_metadata()
webbible = False webbible = False
@ -488,7 +493,7 @@ class BibleUpgradeForm(OpenLPWizard):
u'name: "%s" failed' % ( u'name: "%s" failed' % (
meta_data[u'download source'], meta_data[u'download source'],
meta_data[u'download name'])) meta_data[u'download name']))
delete_database(self.newpath, delete_database(self.path,
clean_filename(self.newbibles[number].get_name())) clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number] del self.newbibles[number]
critical_error_message_box( critical_error_message_box(
@ -517,7 +522,7 @@ class BibleUpgradeForm(OpenLPWizard):
if not language_id: if not language_id:
log.exception(u'Upgrading from "%s" '\ log.exception(u'Upgrading from "%s" '\
'failed' % filename) 'failed' % filename)
delete_database(self.newpath, delete_database(self.path,
clean_filename(self.newbibles[number].get_name())) clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number] del self.newbibles[number]
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
@ -543,7 +548,7 @@ class BibleUpgradeForm(OpenLPWizard):
u'name: "%s" aborted by user' % ( u'name: "%s" aborted by user' % (
meta_data[u'download source'], meta_data[u'download source'],
meta_data[u'download name'])) meta_data[u'download name']))
delete_database(self.newpath, delete_database(self.path,
clean_filename(self.newbibles[number].get_name())) clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number] del self.newbibles[number]
bible_failed = True bible_failed = True
@ -559,7 +564,7 @@ class BibleUpgradeForm(OpenLPWizard):
if not language_id: if not language_id:
log.exception(u'Importing books from "%s" '\ log.exception(u'Importing books from "%s" '\
'failed' % name) 'failed' % name)
delete_database(self.newpath, delete_database(self.path,
clean_filename(self.newbibles[number].get_name())) clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number] del self.newbibles[number]
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
@ -585,7 +590,7 @@ class BibleUpgradeForm(OpenLPWizard):
if not book_ref_id: if not book_ref_id:
log.exception(u'Importing books from %s " '\ log.exception(u'Importing books from %s " '\
'failed - aborted by user' % name) 'failed - aborted by user' % name)
delete_database(self.newpath, delete_database(self.path,
clean_filename(self.newbibles[number].get_name())) clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number] del self.newbibles[number]
bible_failed = True bible_failed = True

View File

@ -62,18 +62,18 @@ class Verse(BaseModel):
""" """
pass pass
def clean_filename(old_filename): def clean_filename(filename):
""" """
Clean up the version name of the Bible and convert it into a valid Clean up the version name of the Bible and convert it into a valid
file name. file name.
``old_filename`` ``filename``
The "dirty" file name or version name. The "dirty" file name or version name.
""" """
if not isinstance(old_filename, unicode): if not isinstance(filename, unicode):
old_filename = unicode(old_filename, u'utf-8') filename = unicode(filename, u'utf-8')
old_filename = re.sub(r'[^\w]+', u'_', old_filename).strip(u'_') filename = re.sub(r'[^\w]+', u'_', filename).strip(u'_')
return old_filename + u'.sqlite' return filename + u'.sqlite'
def init_schema(url): def init_schema(url):
""" """
@ -160,7 +160,7 @@ class BibleDB(QtCore.QObject, Manager):
self.file = clean_filename(self.name) self.file = clean_filename(self.name)
if u'file' in kwargs: if u'file' in kwargs:
self.file = kwargs[u'file'] self.file = kwargs[u'file']
Manager.__init__(self, u'bibles/bibles', init_schema, self.file) Manager.__init__(self, u'bibles', init_schema, self.file)
if u'file' in kwargs: if u'file' in kwargs:
self.get_name() self.get_name()
if u'path' in kwargs: if u'path' in kwargs:
@ -487,6 +487,16 @@ class BibleDB(QtCore.QObject, Manager):
self.create_meta(u'language_id', language_id) self.create_meta(u'language_id', language_id)
return language_id return language_id
def find_old_database(self):
"""
Returns true if it is an old bible database.
"""
try:
columns = self.session.query(Book).all()
except:
return True
return False
def dump_bible(self): def dump_bible(self):
""" """
Utility debugging method to dump the contents of a bible. Utility debugging method to dump the contents of a bible.
@ -863,12 +873,9 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager):
database doesn't exist. database doesn't exist.
""" """
if AlternativeBookNamesDB.cursor is None: if AlternativeBookNamesDB.cursor is None:
check_directory_exists(os.path.join(AppLocation.get_directory(
AppLocation.DataDir), u'bibles', u'resources'))
filepath = os.path.join( filepath = os.path.join(
AppLocation.get_directory(AppLocation.DataDir), u'bibles', AppLocation.get_directory(AppLocation.DataDir), u'bibles',
u'resources', u'alternative_book_names.sqlite') u'alternative_book_names.sqlite')
log.debug(u'Filepath: %s' % filepath)
if not os.path.exists(filepath): if not os.path.exists(filepath):
#create new DB, create table alternative_book_names #create new DB, create table alternative_book_names
AlternativeBookNamesDB.conn = sqlite3.connect(filepath) AlternativeBookNamesDB.conn = sqlite3.connect(filepath)

View File

@ -33,7 +33,7 @@ from openlp.core.lib import Receiver, SettingsManager, translate
from openlp.core.lib.ui import critical_error_message_box from openlp.core.lib.ui import critical_error_message_box
from openlp.core.utils import AppLocation, delete_file from openlp.core.utils import AppLocation, delete_file
from openlp.plugins.bibles.lib import parse_reference from openlp.plugins.bibles.lib import parse_reference
from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta, OldBibleDB
from csvbible import CSVBible from csvbible import CSVBible
from http import HTTPBible from http import HTTPBible
from opensong import OpenSongBible from opensong import OpenSongBible
@ -120,7 +120,7 @@ class BibleManager(object):
""" """
log.debug(u'Bible Initialising') log.debug(u'Bible Initialising')
self.parent = parent self.parent = parent
self.settingsSection = u'bibles/bibles' self.settingsSection = u'bibles'
self.web = u'Web' self.web = u'Web'
self.db_cache = None self.db_cache = None
self.path = AppLocation.get_section_data_path(self.settingsSection) self.path = AppLocation.get_section_data_path(self.settingsSection)
@ -140,8 +140,11 @@ class BibleManager(object):
""" """
log.debug(u'Reload bibles') log.debug(u'Reload bibles')
files = SettingsManager.get_files(self.settingsSection, self.suffix) files = SettingsManager.get_files(self.settingsSection, self.suffix)
if u'alternative_book_names.sqlite' in files:
files.remove(u'alternative_book_names.sqlite')
log.debug(u'Bible Files %s', files) log.debug(u'Bible Files %s', files)
self.db_cache = {} self.db_cache = {}
self.old_bible_databases = []
for filename in files: for filename in files:
bible = BibleDB(self.parent, path=self.path, file=filename) bible = BibleDB(self.parent, path=self.path, file=filename)
name = bible.get_name() name = bible.get_name()
@ -149,6 +152,10 @@ class BibleManager(object):
if name is None: if name is None:
delete_file(os.path.join(self.path, filename)) delete_file(os.path.join(self.path, filename))
continue continue
# Find old database versions
if bible.find_old_database():
self.old_bible_databases.append(filename)
continue
log.debug(u'Bible Name: "%s"', name) log.debug(u'Bible Name: "%s"', name)
self.db_cache[name] = bible self.db_cache[name] = bible
# Look to see if lazy load bible exists and get create getter. # Look to see if lazy load bible exists and get create getter.