change name from reimport to upgrade

fix speed problem while changing the advanced bible
change some "for" loops
This commit is contained in:
Armin Köhler 2011-04-26 20:18:13 +02:00
parent 8e1ef8c890
commit d7dc4def53
9 changed files with 207 additions and 210 deletions

View File

@ -32,6 +32,7 @@ from openlp.core.lib import Plugin, StringContent, build_icon, translate
from openlp.core.lib.ui import base_action, UiStrings from openlp.core.lib.ui import base_action, UiStrings
from openlp.core.utils.actions import ActionList from openlp.core.utils.actions import ActionList
from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem from openlp.plugins.bibles.lib import BibleManager, BiblesTab, BibleMediaItem
from openlp.plugins.bibles.forms import BibleUpgradeForm
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -58,7 +59,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)
self.toolsReimportItem.setVisible(True) self.toolsUpgradeItem.setVisible(True)
def finalise(self): def finalise(self):
""" """
@ -90,7 +91,7 @@ class BiblePlugin(Plugin):
def addToolsMenuItem(self, tools_menu): def addToolsMenuItem(self, tools_menu):
""" """
Give the alerts plugin the opportunity to add items to the Give the bible plugin the opportunity to add items to the
**Tools** menu. **Tools** menu.
``tools_menu`` ``tools_menu``
@ -98,25 +99,28 @@ class BiblePlugin(Plugin):
use it as their parent. use it as their parent.
""" """
log.info(u'add tools menu') log.info(u'add tools menu')
self.toolsReimportItem = QtGui.QAction(tools_menu) self.toolsUpgradeItem = QtGui.QAction(tools_menu)
self.toolsReimportItem.setObjectName(u'toolsReimportItem') self.toolsUpgradeItem.setObjectName(u'toolsUpgradeItem')
self.toolsReimportItem.setText( self.toolsUpgradeItem.setText(
translate('BiblePlugin', 'Re-&import older bible databases')) translate('BiblePlugin', '&Upgrade older bible databases'))
self.toolsReimportItem.setStatusTip( self.toolsUpgradeItem.setStatusTip(
translate('BiblePlugin', 'Re-import the bible databases to addapt ' translate('BiblePlugin', 'Upgrade the bible databases to addapt '
'the database scheme.')) 'the database scheme.'))
tools_menu.addAction(self.toolsReimportItem) tools_menu.addAction(self.toolsUpgradeItem)
QtCore.QObject.connect(self.toolsReimportItem, QtCore.QObject.connect(self.toolsUpgradeItem,
QtCore.SIGNAL(u'triggered()'), self.onToolsReimportItemTriggered) QtCore.SIGNAL(u'triggered()'), self.onToolsUpgradeItemTriggered)
self.toolsReimportItem.setVisible(False) self.toolsUpgradeItem.setVisible(False)
def onToolsReimportItemTriggered(self): def onToolsUpgradeItemTriggered(self):
""" """
Re-import older bible databases. Upgrade older bible databases.
""" """
#self.manager.import_old_bible_databases() if not hasattr(self, u'upgrade_wizard'):
if self.mediaItem: self.upgrade_wizard = BibleUpgradeForm(self.formparent,
self.mediaItem.onReImportClick() self.manager, self)
# If the import was not cancelled then reload.
if self.upgrade_wizard.exec_():
self.mediaItem.reloadBibles()
def onBibleImportClick(self): def onBibleImportClick(self):
if self.mediaItem: if self.mediaItem:

View File

@ -53,6 +53,7 @@ from the .ui files later if necessary.
from booknameform import BookNameForm from booknameform import BookNameForm
from languageform import LanguageForm from languageform import LanguageForm
from bibleimportform import BibleImportForm from bibleimportform import BibleImportForm
from biblereimportform import BibleReImportForm from bibleupgradeform import BibleUpgradeForm
__all__ = ['BibleImportForm'] __all__ = [u'BookNameForm', u'LanguageForm', u'BibleImportForm',
u'BibleUpgradeForm']

View File

@ -45,12 +45,12 @@ from openlp.plugins.bibles.lib.http import BSExtract, BGExtract, CWExtract
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class BibleReImportForm(OpenLPWizard): class BibleUpgradeForm(OpenLPWizard):
""" """
This is the Bible ReImport Wizard, which allows easy importing of Bibles This is the Bible Upgrade Wizard, which allows easy importing of Bibles
into OpenLP from older OpenLP2 database versions. into OpenLP from older OpenLP2 database versions.
""" """
log.info(u'BibleReImportForm loaded') log.info(u'BibleUpgradeForm loaded')
def __init__(self, parent, manager, bibleplugin): def __init__(self, parent, manager, bibleplugin):
""" """
@ -66,7 +66,7 @@ class BibleReImportForm(OpenLPWizard):
The Bible plugin. The Bible plugin.
""" """
self.manager = manager self.manager = manager
self.parent = parent self.mediaItem = bibleplugin.mediaItem
self.suffix = u'.sqlite' self.suffix = u'.sqlite'
self.settingsSection = u'bibles/bibles' self.settingsSection = u'bibles/bibles'
self.oldsettingsSection = u'bibles' self.oldsettingsSection = u'bibles'
@ -80,7 +80,7 @@ class BibleReImportForm(OpenLPWizard):
self.newbibles = {} self.newbibles = {}
self.maxBibles = len(self.files) self.maxBibles = len(self.files)
self.stop_import_flag = False self.stop_import_flag = False
OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleImportWizard', OpenLPWizard.__init__(self, parent, bibleplugin, u'bibleUpgradeWizard',
u':/wizards/wizard_importbible.bmp') u':/wizards/wizard_importbible.bmp')
def setupUi(self, image): def setupUi(self, image):
@ -113,7 +113,7 @@ class BibleReImportForm(OpenLPWizard):
def onCheckBoxIndexChanged(self, index): def onCheckBoxIndexChanged(self, index):
''' '''
Some cleanup while finishing Show/ Hide warnings if CheckBox state has changed
''' '''
for number, filename in enumerate(self.files): for number, filename in enumerate(self.files):
if not self.checkBox[number].checkState() == 2: if not self.checkBox[number].checkState() == 2:
@ -121,8 +121,8 @@ class BibleReImportForm(OpenLPWizard):
self.formWidget[number].hide() self.formWidget[number].hide()
else: else:
if os.path.exists(os.path.join(self.newpath, filename)): if os.path.exists(os.path.join(self.newpath, filename)):
self.verticalWidget[number].setVisible(1) self.verticalWidget[number].show()
self.formWidget[number].setVisible(1) self.formWidget[number].show()
def reject(self): def reject(self):
""" """
@ -161,7 +161,7 @@ class BibleReImportForm(OpenLPWizard):
def customInit(self): def customInit(self):
""" """
Perform any custom initialisation for bible importing. Perform any custom initialisation for bible upgrading.
""" """
self.manager.set_process_dialog(self) self.manager.set_process_dialog(self)
self.restart() self.restart()
@ -213,7 +213,7 @@ class BibleReImportForm(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.parent, path=self.oldpath, file=filename) bible = OldBibleDB(self.mediaItem, path=self.oldpath, 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['+unicode(number)+u']'
self.checkBox[number].setObjectName(checkBoxName) self.checkBox[number].setObjectName(checkBoxName)
@ -233,7 +233,7 @@ class BibleReImportForm(OpenLPWizard):
versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']' versionInfoPixmapName = u'versionInfoPixmap['+unicode(number)+u']'
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_reimport_alert.png')) u':/bibles/bibles_upgrade_alert.png'))
self.versionInfoPixmap[number].setAlignment(QtCore.Qt.AlignRight) self.versionInfoPixmap[number].setAlignment(QtCore.Qt.AlignRight)
self.horizontalLayout[number].addWidget( self.horizontalLayout[number].addWidget(
self.versionInfoPixmap[number]) self.versionInfoPixmap[number])
@ -325,41 +325,41 @@ class BibleReImportForm(OpenLPWizard):
""" """
Allow for localisation of the bible import wizard. Allow for localisation of the bible import wizard.
""" """
self.setWindowTitle(translate('BiblesPlugin.ReImportWizardForm', self.setWindowTitle(translate('BiblesPlugin.UpgradeWizardForm',
'Bible ReImport Wizard')) 'Bible Upgrade Wizard'))
self.titleLabel.setText(WizardStrings.HeaderStyle % self.titleLabel.setText(WizardStrings.HeaderStyle %
translate('OpenLP.Ui', 'Welcome to the Bible ReImport Wizard')) translate('OpenLP.Ui', 'Welcome to the Bible Upgrade Wizard'))
self.informationLabel.setText( self.informationLabel.setText(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'This wizard will help you to reimport your existing Bibles from a ' 'This wizard will help you to upgrade your existing Bibles from a '
'prior version of OpenLP 2. Click the next button below to start ' 'prior version of OpenLP 2. Click the next button below to start '
'the process by selecting the bibles to reimport.')) 'the process by selecting the bibles to upgrade.'))
self.selectPage.setTitle( self.selectPage.setTitle(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Please choose')) 'Please choose'))
self.selectPage.setSubTitle( self.selectPage.setSubTitle(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Please choose the bibles which should be reimported')) 'Please choose the bibles which should be upgraded'))
for number, bible in enumerate(self.files): for number, bible in enumerate(self.files):
self.versionNameLabel[number].setText( self.versionNameLabel[number].setText(
translate('BiblesPlugin.ReImportWizardForm', 'Version name:')) translate('BiblesPlugin.UpgradeWizardForm', 'Version name:'))
self.versionInfoLabel[number].setText( self.versionInfoLabel[number].setText(
translate('BiblesPlugin.ReImportWizardForm', 'This ' translate('BiblesPlugin.UpgradeWizardForm', 'This '
'bible still exists. Please change the name or uncheck it.')) 'bible still exists. Please change the name or uncheck it.'))
self.progressPage.setTitle(WizardStrings.Importing) self.progressPage.setTitle(WizardStrings.Importing)
self.progressPage.setSubTitle( self.progressPage.setSubTitle(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Please wait while your Bibles are imported.')) 'Please wait while your Bibles are upgraded.'))
self.progressLabel.setText(WizardStrings.Ready) self.progressLabel.setText(WizardStrings.Ready)
self.progressBar.setFormat(u'%p%') self.progressBar.setFormat(u'%p%')
self.deleteCheckBox.setText( self.deleteCheckBox.setText(
translate('BiblesPlugin.ReImportWizardForm', 'Delete old bible ' translate('BiblesPlugin.UpgradeWizardForm', 'Delete old bible '
'database(s) from bibles which was imported\nsucessful right now')) 'database(s) from bibles which was upgraded\nsucessful right now'))
self.deleteAllCheckBox.setText( self.deleteAllCheckBox.setText(
translate('BiblesPlugin.ReImportWizardForm', 'Delete all old bible ' translate('BiblesPlugin.UpgradeWizardForm', 'Delete all old bible '
'database(s) (including not imported bibles)')) 'database(s) (including not upgraded bibles)'))
self.progressLabelAfter.setText( self.progressLabelAfter.setText(
translate('BiblesPlugin.ReImportWizardForm', '\nIf OpenLP should ' translate('BiblesPlugin.UpgradeWizardForm', '\nIf OpenLP should '
'delete the old bible databases please choose:')) 'delete the old bible databases please choose:'))
def validateCurrentPage(self): def validateCurrentPage(self):
@ -373,21 +373,21 @@ class BibleReImportForm(OpenLPWizard):
if not self.checkBox[number].checkState() == 2: if not self.checkBox[number].checkState() == 2:
continue continue
version_name = unicode(self.versionNameEdit[number].text()) version_name = unicode(self.versionNameEdit[number].text())
oldbible = OldBibleDB(self.parent, path=self.oldpath, oldbible = OldBibleDB(self.mediaItem, path=self.oldpath,
file=filename) file=filename)
oldname = oldbible.get_name() oldname = oldbible.get_name()
if not version_name: if not version_name:
critical_error_message_box(UiStrings().EmptyField, critical_error_message_box(UiStrings().EmptyField,
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'You need to specify a version name for your Bible.')) 'You need to specify a version name for your Bible.'))
self.versionNameEdit[number].setFocus() self.versionNameEdit[number].setFocus()
return False return False
elif self.manager.exists(version_name): elif self.manager.exists(version_name):
critical_error_message_box( critical_error_message_box(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Bible Exists'), 'Bible Exists'),
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'This Bible already exists. Please import ' '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.versionNameEdit[number].setFocus()
@ -395,10 +395,10 @@ class BibleReImportForm(OpenLPWizard):
elif os.path.exists(os.path.join(self.newpath, filename)) and \ elif os.path.exists(os.path.join(self.newpath, filename)) and \
version_name == oldname: version_name == oldname:
critical_error_message_box( critical_error_message_box(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Bible Exists'), 'Bible Exists'),
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'This Bible already exists. Please import ' '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.versionNameEdit[number].setFocus()
@ -406,10 +406,10 @@ class BibleReImportForm(OpenLPWizard):
elif os.path.exists(os.path.join(self.newpath, elif os.path.exists(os.path.join(self.newpath,
self.clean_filename(version_name))): self.clean_filename(version_name))):
critical_error_message_box( critical_error_message_box(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Bible Exists'), 'Bible Exists'),
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'This Bible already exists. Please import ' '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.versionNameEdit[number].setFocus()
@ -422,7 +422,7 @@ class BibleReImportForm(OpenLPWizard):
""" """
Set default values for the wizard pages. Set default values for the wizard pages.
""" """
log.debug(u'BibleReImport setDefaults') log.debug(u'BibleUpgrade setDefaults')
settings = QtCore.QSettings() settings = QtCore.QSettings()
settings.beginGroup(self.plugin.settingsSection) settings.beginGroup(self.plugin.settingsSection)
self.stop_import_flag = False self.stop_import_flag = False
@ -440,8 +440,8 @@ class BibleReImportForm(OpenLPWizard):
for number, filename in enumerate(self.files): for number, filename in enumerate(self.files):
self.checkBox[number].setCheckState(2) self.checkBox[number].setCheckState(2)
if os.path.exists(os.path.join(self.newpath, filename)): if os.path.exists(os.path.join(self.newpath, filename)):
self.verticalWidget[number].setVisible(1) self.verticalWidget[number].show()
self.formWidget[number].setVisible(1) self.formWidget[number].show()
else: else:
self.verticalWidget[number].hide() self.verticalWidget[number].hide()
self.formWidget[number].hide() self.formWidget[number].hide()
@ -456,24 +456,24 @@ class BibleReImportForm(OpenLPWizard):
def preWizard(self): def preWizard(self):
""" """
Prepare the UI for the import. Prepare the UI for the upgrade.
""" """
OpenLPWizard.preWizard(self) OpenLPWizard.preWizard(self)
self.progressLabel.setText(translate( self.progressLabel.setText(translate(
'BiblesPlugin.ImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Starting Importing bible...')) 'Starting upgrading bible(s)...'))
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
def performWizard(self): def performWizard(self):
""" """
Perform the actual import. Perform the actual upgrade.
""" """
include_webbible = False include_webbible = False
proxy_server = None proxy_server = None
if self.maxBibles == 0: if self.maxBibles == 0:
self.progressLabel.setText( self.progressLabel.setText(
translate('BiblesPlugin.ReImportWizardForm', 'Sorry, but OpenLP' translate('BiblesPlugin.UpgradeWizardForm', 'Sorry, but OpenLP'
' could not find a Bible to reimport.')) ' could not find a Bible to upgrade.'))
self.progressBar.hide() self.progressBar.hide()
return return
self.maxBibles = 0 self.maxBibles = 0
@ -487,24 +487,25 @@ class BibleReImportForm(OpenLPWizard):
if not self.checkBox[biblenumber].checkState() == 2: if not self.checkBox[biblenumber].checkState() == 2:
continue continue
self.progressBar.reset() self.progressBar.reset()
oldbible = OldBibleDB(self.parent, path=self.oldpath, file=filename) oldbible = OldBibleDB(self.mediaItem, path=self.oldpath,
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.oldpath, filename))
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\nFailed')) % 'Upgrading Bible %s of %s: "%s"\nFailed')) %
(number+1, self.maxBibles, name), (number+1, self.maxBibles, name),
self.progressBar.maximum()-self.progressBar.value()) self.progressBar.maximum()-self.progressBar.value())
number += 1 number += 1
continue continue
self.progressLabel.setText(unicode(translate( self.progressLabel.setText(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting 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.newpath, filename)):
name = unicode(self.versionNameEdit[biblenumber].text()) name = unicode(self.versionNameEdit[biblenumber].text())
self.newbibles[number] = BibleDB(self.parent, path=self.oldpath, self.newbibles[number] = BibleDB(self.mediaItem, path=self.oldpath,
name=name) name=name)
metadata = oldbible.get_metadata() metadata = oldbible.get_metadata()
webbible = False webbible = False
@ -538,16 +539,16 @@ class BibleReImportForm(OpenLPWizard):
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(
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'Download Error'), 'Download Error'),
translate('BiblesPlugin.ReImportWizardForm', translate('BiblesPlugin.UpgradeWizardForm',
'To Re-Import your webbibles a Internet connection is ' 'To upgrade your webbibles a Internet connection is '
'necessary. Please check your Internet connection, and ' 'necessary. Please check your Internet connection, and '
'if this error continues to occur please consider ' 'if this error continues to occur please consider '
'reporting a bug.')) 'reporting a bug.'))
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\nFailed')) % 'Upgrading Bible %s of %s: "%s"\nFailed')) %
(number+1, self.maxBibles, name), (number+1, self.maxBibles, name),
self.progressBar.maximum()-self.progressBar.value()) self.progressBar.maximum()-self.progressBar.value())
number += 1 number += 1
@ -562,14 +563,14 @@ class BibleReImportForm(OpenLPWizard):
else: else:
language_id = self.newbibles[number].get_language() language_id = self.newbibles[number].get_language()
if not language_id: if not language_id:
log.exception(u'Re-Importing from "%s" '\ log.exception(u'Upgrading from "%s" '\
'failed' % filename) 'failed' % filename)
delete_database(self.newpath, self.newbibles[number].\ delete_database(self.newpath, self.newbibles[number].\
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(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\nFailed')) % 'Upgrading Bible %s of %s: "%s"\nFailed')) %
(number+1, self.maxBibles, name), (number+1, self.maxBibles, name),
self.progressBar.maximum()-self.progressBar.value()) self.progressBar.maximum()-self.progressBar.value())
number += 1 number += 1
@ -577,8 +578,8 @@ class BibleReImportForm(OpenLPWizard):
self.progressBar.setMaximum(len(books)) self.progressBar.setMaximum(len(books))
for book in books: for book in books:
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\n' 'Upgrading Bible %s of %s: "%s"\n'
'Importing %s ...')) % 'Importing %s ...')) %
(number+1, self.maxBibles, name, book)) (number+1, self.maxBibles, name, book))
book_ref_id = self.newbibles[number].\ book_ref_id = self.newbibles[number].\
@ -608,8 +609,8 @@ class BibleReImportForm(OpenLPWizard):
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(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\nFailed')) % 'Upgrading Bible %s of %s: "%s"\nFailed')) %
(number+1, self.maxBibles, name), (number+1, self.maxBibles, name),
self.progressBar.maximum()-self.progressBar.value()) self.progressBar.maximum()-self.progressBar.value())
number += 1 number += 1
@ -618,8 +619,8 @@ class BibleReImportForm(OpenLPWizard):
self.progressBar.setMaximum(len(books)) self.progressBar.setMaximum(len(books))
for book in books: for book in books:
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\n' 'Upgrading Bible %s of %s: "%s"\n'
'Importing %s ...')) % 'Importing %s ...')) %
(number+1, self.maxBibles, name, book[u'name'])) (number+1, self.maxBibles, name, book[u'name']))
book_ref_id = self.newbibles[number].\ book_ref_id = self.newbibles[number].\
@ -643,19 +644,19 @@ class BibleReImportForm(OpenLPWizard):
Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'openlp_process_events')
if not bible_failed: if not bible_failed:
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\n' 'Upgrading Bible %s of %s: "%s"\n'
'Done')) % 'Done')) %
(number+1, self.maxBibles, name)) (number+1, self.maxBibles, name))
self.success[biblenumber] = True self.success[biblenumber] = True
else: else:
self.incrementProgressBar(unicode(translate( self.incrementProgressBar(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Reimporting Bible %s of %s: "%s"\nFailed')) % 'Upgrading Bible %s of %s: "%s"\nFailed')) %
(number+1, self.maxBibles, name), (number+1, self.maxBibles, name),
self.progressBar.maximum()-self.progressBar.value()) self.progressBar.maximum()-self.progressBar.value())
number += 1 number += 1
self.parent.reloadBibles() self.mediaItem.reloadBibles()
successful_import = 0 successful_import = 0
failed_import = 0 failed_import = 0
for number, success in self.success.iteritems(): for number, success in self.success.iteritems():
@ -665,34 +666,34 @@ class BibleReImportForm(OpenLPWizard):
failed_import += 1 failed_import += 1
if failed_import > 0: if failed_import > 0:
failed_import_text = unicode(translate( failed_import_text = unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
' - %s reimport fail')) % failed_import ' - %s upgrade fail')) % failed_import
else: else:
failed_import_text = u'' failed_import_text = u''
if successful_import > 0: if successful_import > 0:
if include_webbible: if include_webbible:
self.progressLabel.setText(unicode( self.progressLabel.setText(unicode(
translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s '
'bible(s) successful%s.\nPlease note, that verses from ' 'bible(s) successful%s.\nPlease note, that verses from '
'webbibles will be downloaded\non demand and thus an ' 'webbibles will be downloaded\non demand and thus an '
'internet connection is required.')) % 'internet connection is required.')) %
(successful_import, failed_import_text)) (successful_import, failed_import_text))
else: else:
self.progressLabel.setText(unicode( self.progressLabel.setText(unicode(
translate('BiblesPlugin.ReImportWizardForm', 'Reimport %s ' translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade %s '
'bible(s) successful.%s')) % (successful_import, 'bible(s) successful.%s')) % (successful_import,
failed_import_text)) failed_import_text))
self.deleteCheckBox.setVisible(1) self.deleteCheckBox.show()
bibles = u'' bibles = u''
for bible in self.newbibles.itervalues(): for bible in self.newbibles.itervalues():
name = bible.get_name() name = bible.get_name()
bibles += u'\n"' + name + u'"' bibles += u'\n"' + name + u'"'
self.deleteCheckBox.setToolTip(unicode(translate( self.deleteCheckBox.setToolTip(unicode(translate(
'BiblesPlugin.ReImportWizardForm', 'BiblesPlugin.UpgradeWizardForm',
'Sucessful imported bible(s):%s')) % bibles) 'Sucessful upgraded bible(s):%s')) % bibles)
else: else:
self.progressLabel.setText( self.progressLabel.setText(
translate('BiblesPlugin.ReImportWizardForm', 'Reimport ' translate('BiblesPlugin.UpgradeWizardForm', 'Upgrade '
'failed.')) 'failed.'))
self.progressLabelAfter.setVisible(1) self.progressLabelAfter.show()
self.deleteAllCheckBox.setVisible(1) self.deleteAllCheckBox.show()

View File

@ -35,7 +35,7 @@ from sqlalchemy import Column, ForeignKey, or_, Table, types
from sqlalchemy.orm import class_mapper, mapper, relation from sqlalchemy.orm import class_mapper, mapper, relation
from sqlalchemy.orm.exc import UnmappedClassError from sqlalchemy.orm.exc import UnmappedClassError
from openlp.core.lib import Receiver, translate from openlp.core.lib import Receiver, translate, check_directory_exists
from openlp.core.lib.db import BaseModel, init_db, Manager from openlp.core.lib.db import BaseModel, init_db, Manager
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 from openlp.core.utils import AppLocation
@ -295,14 +295,14 @@ class BibleDB(QtCore.QObject, Manager):
The name of the book to return. The name of the book to return.
""" """
log.debug(u'BibleDB.get_book("%s")', book) log.debug(u'BibleDB.get_book("%s")', book)
db_book = self.get_object_filtered(Book, Book.name.like(book + u'%')) return self.get_object_filtered(Book, Book.name.like(book + u'%'))
return db_book
def get_books(self): def get_books(self):
""" """
A wrapper so both local and web bibles have a get_books() method that A wrapper so both local and web bibles have a get_books() method that
manager can call. Used in the media manager advanced search tab. manager can call. Used in the media manager advanced search tab.
""" """
log.debug(u'BibleDB.get_books()')
return self.get_all_objects(Book, order_by_ref=Book.id) return self.get_all_objects(Book, order_by_ref=Book.id)
def get_book_by_book_ref_id(self, id): def get_book_by_book_ref_id(self, id):
@ -313,9 +313,7 @@ class BibleDB(QtCore.QObject, Manager):
The reference id of the book to return. The reference id of the book to return.
""" """
log.debug(u'BibleDB.get_book_by_book_ref_id("%s")', id) log.debug(u'BibleDB.get_book_by_book_ref_id("%s")', id)
db_book = self.get_object_filtered(Book, return self.get_object_filtered(Book, Book.book_reference_id.like(id))
Book.book_reference_id.like(id))
return db_book
def get_book_ref_id_by_name(self, book, language_id=None): def get_book_ref_id_by_name(self, book, language_id=None):
log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book, log.debug(u'BibleDB.get_book_ref_id_by_name:("%s", "%s")', book,
@ -421,16 +419,16 @@ class BibleDB(QtCore.QObject, Manager):
verses = verses.all() verses = verses.all()
return verses return verses
def get_chapter_count(self, book_id): def get_chapter_count(self, book):
""" """
Return the number of chapters in a book. Return the number of chapters in a book.
``book`` ``book``
The book to get the chapter count for. The book object to get the chapter count for.
""" """
log.debug(u'BibleDB.get_chapter_count("%s")', book_id) log.debug(u'BibleDB.get_chapter_count("%s")', book.name)
count = self.session.query(Verse.chapter).join(Book)\ count = self.session.query(Verse.chapter).join(Book)\
.filter(Book.book_reference_id==book_id)\ .filter(Book.name==book.name)\
.distinct().count() .distinct().count()
if not count: if not count:
return 0 return 0
@ -541,16 +539,16 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
log.debug(u'BiblesResourcesDB.get_books()') log.debug(u'BiblesResourcesDB.get_books()')
books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, '
u'abbreviation, chapters FROM book_reference ORDER BY id') u'abbreviation, chapters FROM book_reference ORDER BY id')
book_list = [] return [
for book in books: {
book_list.append({ u'id': book[0],
u'id': book[0], u'testament_id': book[1],
u'testament_id': book[1], u'name': unicode(book[2]),
u'name': unicode(book[2]), u'abbreviation': unicode(book[3]),
u'abbreviation': unicode(book[3]), u'chapters': book[4]
u'chapters': book[4] }
}) for book in books
return book_list ]
@staticmethod @staticmethod
def get_book(name): def get_book(name):
@ -700,16 +698,16 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
u'language_id, download_source_id FROM webbibles WHERE ' u'language_id, download_source_id FROM webbibles WHERE '
u'download_source_id = ?', (source[u'id'],)) u'download_source_id = ?', (source[u'id'],))
if bibles: if bibles:
bibles_temp = [] return [
for bible in bibles: {
bibles_temp.append({ u'id': bible[0],
u'id': bible[0], u'name': bible[1],
u'name': bible[1], u'abbreviation': bible[2],
u'abbreviation': bible[2], u'language_id': bible[3],
u'language_id': bible[3], u'download_source_id': bible[4]
u'download_source_id': bible[4] }
}) for bible in bibles
return bibles_temp ]
else: else:
return None return None
@ -736,14 +734,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
u'download_source_id = ? AND abbreviation = ?', (source[u'id'], u'download_source_id = ? AND abbreviation = ?', (source[u'id'],
abbreviation)) abbreviation))
if bible: if bible:
bibles_temp = { return {
u'id': bible[0][0], u'id': bible[0][0],
u'name': bible[0][1], u'name': bible[0][1],
u'abbreviation': bible[0][2], u'abbreviation': bible[0][2],
u'language_id': bible[0][3], u'language_id': bible[0][3],
u'download_source_id': bible[0][4] u'download_source_id': bible[0][4]
} }
return bibles_temp
else: else:
return None return None
@ -806,14 +803,14 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM '
u'language ORDER by name') u'language ORDER by name')
if languages: if languages:
languages_temp = [] return [
for language in languages: {
languages_temp.append({ u'id': language[0],
u'id': language[0], u'name': unicode(language[1]),
u'name': unicode(language[1]), u'code': unicode(language[2])
u'code': unicode(language[2]) }
}) for language in languages
return languages_temp ]
else: else:
return None return None
@ -825,13 +822,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager):
log.debug(u'BiblesResourcesDB.get_testament_reference()') log.debug(u'BiblesResourcesDB.get_testament_reference()')
testaments = BiblesResourcesDB.run_sql(u'SELECT id, name FROM ' testaments = BiblesResourcesDB.run_sql(u'SELECT id, name FROM '
u'testament_reference ORDER BY id') u'testament_reference ORDER BY id')
testament_list = [] return [
for testament in testaments: {
testament_list.append({ u'id': testament[0],
u'id': testament[0], u'name': unicode(testament[1])
u'name': unicode(testament[1]) }
}) for testament in testaments
return testament_list ]
class AlternativeBookNamesDB(QtCore.QObject, Manager): class AlternativeBookNamesDB(QtCore.QObject, Manager):
@ -849,12 +846,8 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager):
database doesn't exist. database doesn't exist.
""" """
if AlternativeBookNamesDB.cursor is None: if AlternativeBookNamesDB.cursor is None:
if not os.path.exists(os.path.join( check_directory_exists(os.path.join(AppLocation.get_directory(
AppLocation.get_directory(AppLocation.DataDir), u'bibles', AppLocation.DataDir), u'bibles', u'resources'))
u'resources')):
os.mkdir(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'resources', u'alternative_book_names.sqlite')
@ -933,10 +926,9 @@ class AlternativeBookNamesDB(QtCore.QObject, Manager):
""" """
log.debug(u'AlternativeBookNamesDB.create_alternative_book_name("%s", ' log.debug(u'AlternativeBookNamesDB.create_alternative_book_name("%s", '
'"%s", "%s"', name, book_reference_id, language_id) '"%s", "%s"', name, book_reference_id, language_id)
alternative_book_name = AlternativeBookNamesDB.run_sql(u'INSERT INTO ' return AlternativeBookNamesDB.run_sql(u'INSERT INTO '
u'alternative_book_names(book_reference_id, language_id, name) ' u'alternative_book_names(book_reference_id, language_id, name) '
u'VALUES (?, ?, ?)', (book_reference_id, language_id, name), True) u'VALUES (?, ?, ?)', (book_reference_id, language_id, name), True)
return alternative_book_name
class OldBibleDB(QtCore.QObject, Manager): class OldBibleDB(QtCore.QObject, Manager):
@ -1014,15 +1006,15 @@ class OldBibleDB(QtCore.QObject, Manager):
metadata = self.run_sql(u'SELECT key, value FROM metadata ' metadata = self.run_sql(u'SELECT key, value FROM metadata '
u'ORDER BY rowid') u'ORDER BY rowid')
if metadata: if metadata:
metadata_list = [] return [
for meta in metadata: {
metadata_list.append({ u'key': unicode(meta[0]),
u'key': unicode(meta[0]), u'value': unicode(meta[1])
u'value': unicode(meta[1]) }
}) for meta in metadata
]
else: else:
metadata_list = None return None
return metadata_list
def get_books(self): def get_books(self):
""" """
@ -1030,15 +1022,16 @@ class OldBibleDB(QtCore.QObject, Manager):
""" """
books = self.run_sql(u'SELECT name, id FROM book ORDER BY id') books = self.run_sql(u'SELECT name, id FROM book ORDER BY id')
if books: if books:
return [
{
u'name': unicode(book[0]),
u'id':int(book[1])
}
for book in books
]
book_list = [] book_list = []
for book in books:
book_list.append({
u'name': unicode(book[0]),
u'id':int(book[1])
})
else: else:
book_list = None return None
return book_list
def get_verses(self, book_id): def get_verses(self, book_id):
""" """
@ -1047,15 +1040,14 @@ class OldBibleDB(QtCore.QObject, Manager):
verses = self.run_sql(u'SELECT book_id, chapter, verse, text FROM ' verses = self.run_sql(u'SELECT book_id, chapter, verse, text FROM '
u'verse WHERE book_id = ? ORDER BY id', (book_id, )) u'verse WHERE book_id = ? ORDER BY id', (book_id, ))
if verses: if verses:
verse_list = [] return [
for verse in verses: {
verse_list.append({ u'book_id': int(verse[0]),
u'book_id': int(verse[0]), u'chapter': int(verse[1]),
u'chapter': int(verse[1]), u'verse': int(verse[2]),
u'verse': int(verse[2]), u'text': unicode(verse[3])
u'text': unicode(verse[3]) }
}) for verse in verses
]
else: else:
verse_list = None return None
return verse_list

View File

@ -241,10 +241,10 @@ class BSExtract(object):
send_error_message(u'parse') send_error_message(u'parse')
return None return None
content = content.findAll(u'li') content = content.findAll(u'li')
books = [] return [
for book in content:
books.append(book.contents[0].contents[0]) books.append(book.contents[0].contents[0])
return books for book in content
]
class CWExtract(object): class CWExtract(object):
@ -507,12 +507,15 @@ class HTTPBible(BibleDB):
log.debug(u'HTTPBible.get_books("%s")', Book.name) log.debug(u'HTTPBible.get_books("%s")', Book.name)
return self.get_all_objects(Book, order_by_ref=Book.id) return self.get_all_objects(Book, order_by_ref=Book.id)
def get_chapter_count(self, book_id): def get_chapter_count(self, book):
""" """
Return the number of chapters in a particular book. Return the number of chapters in a particular book.
``book``
The book object to get the chapter count for.
""" """
log.debug(u'HTTPBible.get_chapter_count("%s")', book_id) log.debug(u'HTTPBible.get_chapter_count("%s")', book.name)
return BiblesResourcesDB.get_chapter_count(book_id) return BiblesResourcesDB.get_chapter_count(book.book_reference_id)
def get_verse_count(self, book_id, chapter): def get_verse_count(self, book_id, chapter):
""" """

View File

@ -208,23 +208,27 @@ class BibleManager(object):
Unicode. The Bible to get the list of books from. Unicode. The Bible to get the list of books from.
""" """
log.debug(u'BibleManager.get_books("%s")', bible) log.debug(u'BibleManager.get_books("%s")', bible)
language_id = self.get_meta_data(bible, u'language_id') return [
books = []
for book in self.db_cache[bible].get_books():
books.append(
{ {
u'name': book.name, u'name': book.name,
u'chapters': self.db_cache[bible].get_chapter_count( u'chapters': self.db_cache[bible].get_chapter_count(
book.book_reference_id) book)
}) }
return books for book in self.db_cache[bible].get_books()
]
def get_chapter_count(self, bible, book): def get_chapter_count(self, bible, book):
""" """
Returns the number of Chapters for a given book. Returns the number of Chapters for a given book.
``bible``
Unicode. The Bible to get the list of books from.
``book``
The book object to get the chapter count for.
""" """
log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible, log.debug(u'BibleManager.get_book_chapter_count ("%s", "%s")', bible,
book) book.name)
return self.db_cache[bible].get_chapter_count(book) return self.db_cache[bible].get_chapter_count(book)
def get_verse_count(self, bible, book, chapter): def get_verse_count(self, bible, book, chapter):

View File

@ -33,7 +33,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
from openlp.core.lib.searchedit import SearchEdit from openlp.core.lib.searchedit import SearchEdit
from openlp.core.lib.ui import UiStrings, add_widget_completer, \ from openlp.core.lib.ui import UiStrings, add_widget_completer, \
media_item_combo_box, critical_error_message_box, find_and_set_in_combo_box media_item_combo_box, critical_error_message_box, find_and_set_in_combo_box
from openlp.plugins.bibles.forms import BibleImportForm, BibleReImportForm from openlp.plugins.bibles.forms import BibleImportForm
from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \ from openlp.plugins.bibles.lib import LayoutStyle, DisplayStyle, \
VerseReferenceList, get_reference_match VerseReferenceList, get_reference_match
@ -310,14 +310,6 @@ class BibleMediaItem(MediaManagerItem):
if self.import_wizard.exec_(): if self.import_wizard.exec_():
self.reloadBibles() self.reloadBibles()
def onReImportClick(self):
if not hasattr(self, u'reimport_wizard'):
self.reimport_wizard = BibleReImportForm(self, self.parent.manager,
self.parent)
# If the import was not cancelled then reload.
if self.reimport_wizard.exec_():
self.reloadBibles()
def loadBibles(self): def loadBibles(self):
log.debug(u'Loading Bibles') log.debug(u'Loading Bibles')
self.quickVersionComboBox.clear() self.quickVersionComboBox.clear()

View File

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 762 B

View File

@ -24,7 +24,7 @@
<qresource prefix="bibles"> <qresource prefix="bibles">
<file>bibles_search_text.png</file> <file>bibles_search_text.png</file>
<file>bibles_search_reference.png</file> <file>bibles_search_reference.png</file>
<file>bibles_reimport_alert.png</file> <file>bibles_upgrade_alert.png</file>
</qresource> </qresource>
<qresource prefix="plugins"> <qresource prefix="plugins">
<file>plugin_alerts.png</file> <file>plugin_alerts.png</file>