From 4452d4834c2788f06dc3e2a7ee3381f1876b029f Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 22 Apr 2012 00:29:08 +0200 Subject: [PATCH] Refactored various variable names. Refactored the names of the fields in the "metadata" table of Bibles, and provided an upgrade script to upgrade the Bibles seamlessly. Refactored the name of a setting, and wrote some code to migrate it seamlessly. --- openlp/core/lib/plugin.py | 22 +++--- openlp/core/ui/settingsform.py | 8 +- openlp/plugins/alerts/alertsplugin.py | 14 ++-- openlp/plugins/alerts/forms/alertform.py | 2 +- openlp/plugins/alerts/lib/alertsmanager.py | 4 +- openlp/plugins/bibles/bibleplugin.py | 21 ++++-- .../plugins/bibles/forms/bibleupgradeform.py | 47 ++++++------ openlp/plugins/bibles/forms/booknameform.py | 8 +- .../plugins/bibles/forms/editbibledialog.py | 4 +- openlp/plugins/bibles/forms/editbibleform.py | 48 ++++++------ openlp/plugins/bibles/lib/__init__.py | 6 +- openlp/plugins/bibles/lib/biblestab.py | 4 +- openlp/plugins/bibles/lib/db.py | 72 +++++++----------- openlp/plugins/bibles/lib/http.py | 72 +++++++++--------- openlp/plugins/bibles/lib/manager.py | 16 ++-- openlp/plugins/bibles/lib/mediaitem.py | 28 +++---- openlp/plugins/bibles/lib/upgrade.py | 73 +++++++++++++++++++ openlp/plugins/custom/lib/mediaitem.py | 2 +- openlp/plugins/images/lib/mediaitem.py | 12 +-- openlp/plugins/media/mediaplugin.py | 4 +- openlp/plugins/presentations/lib/mediaitem.py | 12 +-- .../presentations/presentationplugin.py | 4 +- openlp/plugins/songs/forms/songimportform.py | 2 +- .../plugins/songs/lib/foilpresenterimport.py | 28 +++---- openlp/plugins/songs/lib/mediaitem.py | 8 +- openlp/plugins/songs/lib/olp1import.py | 2 +- openlp/plugins/songs/lib/upgrade.py | 2 + openlp/plugins/songs/lib/xml.py | 25 ++++--- openlp/plugins/songs/songsplugin.py | 4 +- openlp/plugins/songusage/songusageplugin.py | 8 +- 30 files changed, 315 insertions(+), 247 deletions(-) create mode 100644 openlp/plugins/bibles/lib/upgrade.py diff --git a/openlp/core/lib/plugin.py b/openlp/core/lib/plugin.py index f704bd9cd..f51dd187b 100644 --- a/openlp/core/lib/plugin.py +++ b/openlp/core/lib/plugin.py @@ -155,9 +155,9 @@ class Plugin(QtCore.QObject): self.version = get_application_version()[u'version'] self.settingsSection = self.name self.icon = None - self.media_item_class = media_item_class - self.settings_tab_class = settings_tab_class - self.settings_tab = None + self.mediaItemClass = media_item_class + self.settingsTabClass = settings_tab_class + self.settingsTab = None self.mediaItem = None self.weight = 0 self.status = PluginStatus.Inactive @@ -166,9 +166,9 @@ class Plugin(QtCore.QObject): self.renderer = plugin_helpers[u'renderer'] self.serviceManager = plugin_helpers[u'service'] self.settingsForm = plugin_helpers[u'settings form'] - self.mediadock = plugin_helpers[u'toolbox'] + self.mediaDock = plugin_helpers[u'toolbox'] self.pluginManager = plugin_helpers[u'pluginmanager'] - self.formparent = plugin_helpers[u'formparent'] + self.formParent = plugin_helpers[u'formparent'] self.mediaController = plugin_helpers[u'mediacontroller'] QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'%s_add_service_item' % self.name), @@ -219,8 +219,8 @@ class Plugin(QtCore.QObject): Construct a MediaManagerItem object with all the buttons and things you need, and return it for integration into OpenLP. """ - if self.media_item_class: - self.mediaItem = self.media_item_class(self.mediadock.media_dock, + if self.mediaItemClass: + self.mediaItem = self.mediaItemClass(self.mediaDock.media_dock, self, self.icon) def addImportMenuItem(self, importMenu): @@ -255,8 +255,8 @@ class Plugin(QtCore.QObject): Create a tab for the settings window to display the configurable options for this plugin to the user. """ - if self.settings_tab_class: - self.settings_tab = self.settings_tab_class(parent, self.name, + if self.settingsTabClass: + self.settingsTab = self.settingsTabClass(parent, self.name, self.getString(StringContent.VisibleName)[u'title'], self.icon_path) @@ -294,14 +294,14 @@ class Plugin(QtCore.QObject): """ if self.mediaItem: self.mediaItem.initialise() - self.mediadock.insert_dock(self.mediaItem, self.icon, self.weight) + self.mediaDock.insert_dock(self.mediaItem, self.icon, self.weight) def finalise(self): """ Called by the plugin Manager to cleanup things. """ if self.mediaItem: - self.mediadock.remove_dock(self.mediaItem) + self.mediaDock.remove_dock(self.mediaItem) def appStartup(self): """ diff --git a/openlp/core/ui/settingsform.py b/openlp/core/ui/settingsform.py index b2e09e809..4e2b5b649 100644 --- a/openlp/core/ui/settingsform.py +++ b/openlp/core/ui/settingsform.py @@ -65,8 +65,8 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): self.insertTab(self.advancedTab, 2, PluginStatus.Active) count = 3 for plugin in self.plugins: - if plugin.settings_tab: - self.insertTab(plugin.settings_tab, count, plugin.status) + if plugin.settingsTab: + self.insertTab(plugin.settingsTab, count, plugin.status) count += 1 self.settingListWidget.setCurrentRow(0) return QtGui.QDialog.exec_(self) @@ -114,8 +114,8 @@ class SettingsForm(QtGui.QDialog, Ui_SettingsDialog): self.themesTab.postSetUp() self.advancedTab.postSetUp() for plugin in self.plugins: - if plugin.settings_tab: - plugin.settings_tab.postSetUp() + if plugin.settingsTab: + plugin.settingsTab.postSetUp() def tabChanged(self, tabIndex): """ diff --git a/openlp/plugins/alerts/alertsplugin.py b/openlp/plugins/alerts/alertsplugin.py index 05ba2e8bb..d30710968 100644 --- a/openlp/plugins/alerts/alertsplugin.py +++ b/openlp/plugins/alerts/alertsplugin.py @@ -197,10 +197,10 @@ class AlertsPlugin(Plugin): """ Add CSS to the main display. """ - align = VerticalType.Names[self.settings_tab.location] - return CSS % (align, self.settings_tab.font_face, - self.settings_tab.font_size, self.settings_tab.font_color, - self.settings_tab.bg_color) + align = VerticalType.Names[self.settingsTab.location] + return CSS % (align, self.settingsTab.font_face, + self.settingsTab.font_size, self.settingsTab.font_color, + self.settingsTab.bg_color) def getDisplayHtml(self): """ @@ -215,7 +215,7 @@ class AlertsPlugin(Plugin): ``frame`` The Web frame holding the page. """ - align = VerticalType.Names[self.settings_tab.location] + align = VerticalType.Names[self.settingsTab.location] frame.evaluateJavaScript(u'update_css("%s", "%s", "%s", "%s", "%s")' % - (align, self.settings_tab.font_face, self.settings_tab.font_size, - self.settings_tab.font_color, self.settings_tab.bg_color)) + (align, self.settingsTab.font_face, self.settingsTab.font_size, + self.settingsTab.font_color, self.settingsTab.bg_color)) diff --git a/openlp/plugins/alerts/forms/alertform.py b/openlp/plugins/alerts/forms/alertform.py index 188914c5d..d2d4813a1 100644 --- a/openlp/plugins/alerts/forms/alertform.py +++ b/openlp/plugins/alerts/forms/alertform.py @@ -43,7 +43,7 @@ class AlertForm(QtGui.QDialog, Ui_AlertDialog): self.manager = plugin.manager self.plugin = plugin self.item_id = None - QtGui.QDialog.__init__(self, plugin.formparent) + QtGui.QDialog.__init__(self, plugin.formParent) self.setupUi(self) QtCore.QObject.connect(self.displayButton, QtCore.SIGNAL(u'clicked()'), self.onDisplayClicked) diff --git a/openlp/plugins/alerts/lib/alertsmanager.py b/openlp/plugins/alerts/lib/alertsmanager.py index 7c92df75e..7e90b3965 100644 --- a/openlp/plugins/alerts/lib/alertsmanager.py +++ b/openlp/plugins/alerts/lib/alertsmanager.py @@ -84,7 +84,7 @@ class AlertsManager(QtCore.QObject): if not self.alertList: return text = self.alertList.pop(0) - alertTab = self.parent().settings_tab + alertTab = self.parent().settingsTab self.parent().liveController.display.alert(text, alertTab.location) # Check to see if we have a timer running. if self.timer_id == 0: @@ -100,7 +100,7 @@ class AlertsManager(QtCore.QObject): """ log.debug(u'timer event') if event.timerId() == self.timer_id: - alertTab = self.parent().settings_tab + alertTab = self.parent().settingsTab self.parent().liveController.display.alert(u'', alertTab.location) self.killTimer(self.timer_id) self.timer_id = 0 diff --git a/openlp/plugins/bibles/bibleplugin.py b/openlp/plugins/bibles/bibleplugin.py index b7df84d92..2f9caa58b 100644 --- a/openlp/plugins/bibles/bibleplugin.py +++ b/openlp/plugins/bibles/bibleplugin.py @@ -27,7 +27,7 @@ import logging -from PyQt4 import QtGui +from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, StringContent, build_icon, translate from openlp.core.lib.ui import create_action, UiStrings @@ -81,16 +81,23 @@ class BiblePlugin(Plugin): def appStartup(self): """ - Perform tasks on application starup + Perform tasks on application startup """ if len(self.manager.old_bible_databases): - if QtGui.QMessageBox.information(self.formparent, + 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() + settings = QtCore.QSettings() + settings.beginGroup(self.settingsSection) + if settings.contains(u'bookname language'): + settings.setValue(u'book name language', settings.value( + u'bookname language', QtCore.QVariant(0)).toInt()[0]) + settings.remove(u'bookname language') + settings.endGroup() def addImportMenuItem(self, import_menu): self.importBibleItem = create_action(import_menu, u'importBibleItem', @@ -126,7 +133,7 @@ class BiblePlugin(Plugin): Upgrade older bible databases. """ if not hasattr(self, u'upgrade_wizard'): - self.upgrade_wizard = BibleUpgradeForm(self.formparent, + self.upgrade_wizard = BibleUpgradeForm(self.formParent, self.manager, self) # If the import was not cancelled then reload. if self.upgrade_wizard.exec_(): @@ -147,7 +154,7 @@ class BiblePlugin(Plugin): Called to find out if the bible plugin is currently using a theme. Returns True if the theme is being used, otherwise returns False. """ - if unicode(self.settings_tab.bible_theme) == theme: + if unicode(self.settingsTab.bible_theme) == theme: return True return False @@ -163,8 +170,8 @@ class BiblePlugin(Plugin): ``newTheme`` The new name the plugin should now use. """ - self.settings_tab.bible_theme = newTheme - self.settings_tab.save() + self.settingsTab.bible_theme = newTheme + self.settingsTab.save() def setPluginTextStrings(self): """ diff --git a/openlp/plugins/bibles/forms/bibleupgradeform.py b/openlp/plugins/bibles/forms/bibleupgradeform.py index b7ba01711..5a0a87430 100644 --- a/openlp/plugins/bibles/forms/bibleupgradeform.py +++ b/openlp/plugins/bibles/forms/bibleupgradeform.py @@ -371,7 +371,7 @@ class BibleUpgradeForm(OpenLPWizard): """ Perform the actual upgrade. """ - self.include_webbible = False + self.includeWebBible = False proxy_server = None if not self.files: self.progressLabel.setText( @@ -383,14 +383,14 @@ class BibleUpgradeForm(OpenLPWizard): for number, file in enumerate(self.files): if self.checkBox[number].checkState() == QtCore.Qt.Checked: max_bibles += 1 - oldBible = None + old_bible = None for number, filename in enumerate(self.files): # Close the previous bible's connection. - if oldBible is not None: - oldBible.close_connection() + if old_bible is not None: + old_bible.close_connection() # Set to None to make obvious that we have already closed the # database. - oldBible = None + old_bible = None if self.stop_import_flag: self.success[number] = False break @@ -398,7 +398,7 @@ class BibleUpgradeForm(OpenLPWizard): self.success[number] = False continue self.progressBar.reset() - oldBible = OldBibleDB(self.mediaItem, path=self.temp_dir, + old_bible = OldBibleDB(self.mediaItem, path=self.temp_dir, file=filename[0]) name = filename[1] self.progressLabel.setText(unicode(translate( @@ -408,21 +408,26 @@ class BibleUpgradeForm(OpenLPWizard): self.newbibles[number] = BibleDB(self.mediaItem, path=self.path, name=name, file=filename[0]) self.newbibles[number].register(self.plugin.upgrade_wizard) - metadata = oldBible.get_metadata() - webbible = False + metadata = old_bible.get_metadata() + web_bible = False meta_data = {} for meta in metadata: + # Upgrade the names of the metadata keys + if meta[u'key'] == u'Version': + meta[u'key'] = u'name' + if meta[u'key'] == u'Bookname language': + meta[u'key'] = 'book_name_language' + meta[u'key'] = meta[u'key'].lower().replace(' ', '_') meta_data[meta[u'key']] = meta[u'value'] - if not meta[u'key'] == u'Version' and not meta[u'key'] == \ - u'dbversion': + if meta[u'key'] != u'name' and meta[u'key'] != u'dbversion': self.newbibles[number].save_meta(meta[u'key'], meta[u'value']) if meta[u'key'] == u'download source': - webbible = True - self.include_webbible = True + web_bible = True + self.includeWebBible = True if meta.has_key(u'proxy server'): proxy_server = meta[u'proxy server'] - if webbible: + if web_bible: if meta_data[u'download source'].lower() == u'crosswalk': handler = CWExtract(proxy_server) elif meta_data[u'download source'].lower() == u'biblegateway': @@ -495,9 +500,9 @@ class BibleUpgradeForm(OpenLPWizard): db_book = self.newbibles[number].create_book(book, book_ref_id, book_details[u'testament_id']) # Try to import already downloaded verses. - oldbook = oldBible.get_book(book) + oldbook = old_bible.get_book(book) if oldbook: - verses = oldBible.get_verses(oldbook[u'id']) + verses = old_bible.get_verses(oldbook[u'id']) if not verses: log.warn(u'No verses found to import for book ' u'"%s"', book) @@ -527,7 +532,7 @@ class BibleUpgradeForm(OpenLPWizard): self.progressBar.maximum() - self.progressBar.value()) self.success[number] = False continue - books = oldBible.get_books() + books = old_bible.get_books() self.progressBar.setMaximum(len(books)) for book in books: if self.stop_import_flag: @@ -551,7 +556,7 @@ class BibleUpgradeForm(OpenLPWizard): book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) db_book = self.newbibles[number].create_book(book[u'name'], book_ref_id, book_details[u'testament_id']) - verses = oldBible.get_verses(book[u'id']) + verses = old_bible.get_verses(book[u'id']) if not verses: log.warn(u'No verses found to import for book ' u'"%s"', book[u'name']) @@ -574,7 +579,7 @@ class BibleUpgradeForm(OpenLPWizard): self.progressBar.maximum() - self.progressBar.value()) else: self.success[number] = True - self.newbibles[number].save_meta(u'Version', name) + self.newbibles[number].save_meta(u'name', name) self.incrementProgressBar(unicode(translate( 'BiblesPlugin.UpgradeWizardForm', 'Upgrading Bible %s of %s: "%s"\n' @@ -583,8 +588,8 @@ class BibleUpgradeForm(OpenLPWizard): if self.newbibles.has_key(number): self.newbibles[number].session.close() # Close the last bible's connection if possible. - if oldBible is not None: - oldBible.close_connection() + if old_bible is not None: + old_bible.close_connection() def postWizard(self): """ @@ -608,7 +613,7 @@ class BibleUpgradeForm(OpenLPWizard): else: failed_import_text = u'' if successful_import > 0: - if self.include_webbible: + if self.includeWebBible: self.progressLabel.setText(unicode( translate('BiblesPlugin.UpgradeWizardForm', 'Upgrading ' 'Bible(s): %s successful%s\nPlease note that verses from ' diff --git a/openlp/plugins/bibles/forms/booknameform.py b/openlp/plugins/bibles/forms/booknameform.py index b3325c853..493dc9c1d 100644 --- a/openlp/plugins/bibles/forms/booknameform.py +++ b/openlp/plugins/bibles/forms/booknameform.py @@ -56,7 +56,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog): QDialog.__init__(self, parent) self.setupUi(self) self.customSignals() - self.booknames = BibleStrings().Booknames + self.book_names = BibleStrings().BookNames self.book_id = False def customSignals(self): @@ -102,7 +102,7 @@ class BookNameForm(QDialog, Ui_BookNameDialog): addBook = False if addBook: self.correspondingComboBox.addItem( - self.booknames[item[u'abbreviation']]) + self.book_names[item[u'abbreviation']]) def exec_(self, name, books, maxbooks): self.books = books @@ -129,8 +129,8 @@ class BookNameForm(QDialog, Ui_BookNameDialog): for character in u'\\.^$*+?{}[]()': cor_book = cor_book.replace(character, u'\\' + character) books = filter(lambda key: - re.match(cor_book, unicode(self.booknames[key]), re.UNICODE), - self.booknames.keys()) + re.match(cor_book, unicode(self.book_names[key]), re.UNICODE), + self.book_names.keys()) books = filter(None, map(BiblesResourcesDB.get_book, books)) if books: self.book_id = books[0][u'id'] diff --git a/openlp/plugins/bibles/forms/editbibledialog.py b/openlp/plugins/bibles/forms/editbibledialog.py index 0d59db62e..489057c22 100644 --- a/openlp/plugins/bibles/forms/editbibledialog.py +++ b/openlp/plugins/bibles/forms/editbibledialog.py @@ -141,7 +141,7 @@ class Ui_EditBibleDialog(object): QtCore.QMetaObject.connectSlotsByName(editBibleDialog) def retranslateUi(self, editBibleDialog): - self.booknames = BibleStrings().Booknames + self.book_names = BibleStrings().BookNames editBibleDialog.setWindowTitle( translate('BiblesPlugin.EditBibleForm', 'Bible Editor')) # Meta tab @@ -178,4 +178,4 @@ class Ui_EditBibleDialog(object): translate('SongsPlugin.EditBibleForm', 'Custom Book Names')) for book in BiblesResourcesDB.get_books(): self.bookNameLabel[book[u'abbreviation']].setText( - u'%s:' % unicode(self.booknames[book[u'abbreviation']])) + u'%s:' % unicode(self.book_names[book[u'abbreviation']])) diff --git a/openlp/plugins/bibles/forms/editbibleform.py b/openlp/plugins/bibles/forms/editbibleform.py index aee42dbcc..2ecd1e519 100644 --- a/openlp/plugins/bibles/forms/editbibleform.py +++ b/openlp/plugins/bibles/forms/editbibleform.py @@ -50,7 +50,7 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): """ QtGui.QDialog.__init__(self, parent) self.mediaitem = mediaitem - self.booknames = BibleStrings().Booknames + self.book_names = BibleStrings().BookNames self.setupUi(self) self.manager = manager @@ -64,16 +64,16 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): log.debug(u'Load Bible') self.bible = bible self.versionNameEdit.setText( - self.manager.get_meta_data(self.bible, u'Version').value) + self.manager.get_meta_data(self.bible, u'name').value) self.copyrightEdit.setText( - self.manager.get_meta_data(self.bible, u'Copyright').value) + self.manager.get_meta_data(self.bible, u'copyright').value) self.permissionsEdit.setText( - self.manager.get_meta_data(self.bible, u'Permissions').value) - bookname_language = self.manager.get_meta_data(self.bible, - u'Bookname language') - if bookname_language and bookname_language.value != u'None': + self.manager.get_meta_data(self.bible, u'permissions').value) + book_name_language = self.manager.get_meta_data(self.bible, + u'book_name_language') + if book_name_language and book_name_language.value != u'None': self.languageSelectionComboBox.setCurrentIndex( - int(bookname_language.value) + 1) + int(book_name_language.value) + 1) self.books = {} self.webbible = self.manager.get_meta_data(self.bible, u'download source') @@ -119,9 +119,9 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): version = unicode(self.versionNameEdit.text()) copyright = unicode(self.copyrightEdit.text()) permissions = unicode(self.permissionsEdit.text()) - bookname_language = self.languageSelectionComboBox.currentIndex() - 1 - if bookname_language == -1: - bookname_language = None + book_name_language = self.languageSelectionComboBox.currentIndex() - 1 + if book_name_language == -1: + book_name_language = None if not self.validateMeta(version, copyright): return if not self.webbible: @@ -135,7 +135,7 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): Receiver.send_message(u'openlp_process_events') Receiver.send_message(u'cursor_busy') self.manager.save_meta_data(self.bible, version, copyright, permissions, - bookname_language) + book_name_language) if not self.webbible: for abbr, book in self.books.iteritems(): if book: @@ -146,11 +146,11 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): Receiver.send_message(u'cursor_normal') QtGui.QDialog.accept(self) - def validateMeta(self, version, copyright): + def validateMeta(self, name, copyright): """ Validate the Meta before saving. """ - if not version: + if not name: self.versionNameEdit.setFocus() critical_error_message_box(UiStrings().EmptyField, translate('BiblesPlugin.BibleEditForm', @@ -163,9 +163,9 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): 'You need to set a copyright for your Bible. ' 'Bibles in the Public Domain need to be marked as such.')) return False - elif self.manager.exists(version) and \ - self.manager.get_meta_data(self.bible, u'Version').value != \ - version: + elif self.manager.exists(name) and \ + self.manager.get_meta_data(self.bible, u'name').value != \ + name: self.versionNameEdit.setFocus() critical_error_message_box( translate('BiblesPlugin.BibleEditForm', 'Bible Exists'), @@ -175,37 +175,37 @@ class EditBibleForm(QtGui.QDialog, Ui_EditBibleDialog): return False return True - def validateBook(self, new_bookname, abbreviation): + def validateBook(self, new_book_name, abbreviation): """ Validate a book. """ book_regex = re.compile(u'[\d]*[^\d]+$') - if not new_bookname: + if not new_book_name: self.bookNameEdit[abbreviation].setFocus() critical_error_message_box(UiStrings().EmptyField, unicode(translate('BiblesPlugin.BibleEditForm', 'You need to specify a book name for "%s".')) % - self.booknames[abbreviation]) + self.book_names[abbreviation]) return False - elif not book_regex.match(new_bookname): + elif not book_regex.match(new_book_name): self.bookNameEdit[abbreviation].setFocus() critical_error_message_box(UiStrings().EmptyField, unicode(translate('BiblesPlugin.BibleEditForm', 'The book name "%s" is not correct.\nNumbers can only be used ' 'at the beginning and must\nbe followed by one or more ' - 'non-numeric characters.')) % new_bookname) + 'non-numeric characters.')) % new_book_name) return False for abbr, book in self.books.iteritems(): if book: if abbr == abbreviation: continue - if unicode(self.bookNameEdit[abbr].text()) == new_bookname: + if unicode(self.bookNameEdit[abbr].text()) == new_book_name: self.bookNameEdit[abbreviation].setFocus() critical_error_message_box( translate('BiblesPlugin.BibleEditForm', 'Duplicate Book Name'), unicode(translate('BiblesPlugin.BibleEditForm', 'The Book Name "%s" has been entered more than once.')) - % new_bookname) + % new_book_name) return False return True diff --git a/openlp/plugins/bibles/lib/__init__.py b/openlp/plugins/bibles/lib/__init__.py index 4eccc087f..4f8582bdf 100644 --- a/openlp/plugins/bibles/lib/__init__.py +++ b/openlp/plugins/bibles/lib/__init__.py @@ -88,7 +88,7 @@ class BibleStrings(object): """ These strings should need a good reason to be retranslated elsewhere. """ - self.Booknames = { + self.BookNames = { u'Gen': translate('BiblesPlugin', 'Genesis'), u'Exod': translate('BiblesPlugin', 'Exodus'), u'Lev': translate('BiblesPlugin', 'Leviticus'), @@ -355,7 +355,7 @@ def parse_reference(reference, bible, language_selection, book_ref_id=False): log.debug(u'Matched reference %s' % reference) book = match.group(u'book') if not book_ref_id: - booknames = BibleStrings().Booknames + book_names = BibleStrings().BookNames # escape reserved characters book_escaped = book for character in u'\\.^$*+?{}[]()': @@ -369,7 +369,7 @@ def parse_reference(reference, bible, language_selection, book_ref_id=False): book_ref_id = db_book.book_reference_id elif language_selection == LanguageSelection.Application: books = filter(lambda key: - regex_book.match(unicode(booknames[key])), booknames.keys()) + regex_book.match(unicode(book_names[key])), book_names.keys()) books = filter(None, map(BiblesResourcesDB.get_book, books)) for value in books: if bible.get_book_by_book_ref_id(value[u'id']): diff --git a/openlp/plugins/bibles/lib/biblestab.py b/openlp/plugins/bibles/lib/biblestab.py index b8ef7bdba..c352a5faf 100644 --- a/openlp/plugins/bibles/lib/biblestab.py +++ b/openlp/plugins/bibles/lib/biblestab.py @@ -483,7 +483,7 @@ class BiblesTab(SettingsTab): self.getGreyTextPalette(False)) self.endSeparatorCheckBox.setChecked(True) self.language_selection = settings.value( - u'bookname language', QtCore.QVariant(0)).toInt()[0] + u'book name language', QtCore.QVariant(0)).toInt()[0] self.languageSelectionComboBox.setCurrentIndex(self.language_selection) settings.endGroup() @@ -496,7 +496,7 @@ class BiblesTab(SettingsTab): QtCore.QVariant(self.display_style)) settings.setValue(u'verse layout style', QtCore.QVariant(self.layout_style)) - settings.setValue(u'bookname language', + settings.setValue(u'book name language', QtCore.QVariant(self.language_selection)) settings.setValue(u'second bibles', QtCore.QVariant(self.second_bibles)) settings.setValue(u'bible theme', QtCore.QVariant(self.bible_theme)) diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 6595103f6..f6e153241 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -39,6 +39,7 @@ from openlp.core.lib import Receiver, translate from openlp.core.lib.db import BaseModel, init_db, Manager from openlp.core.lib.ui import critical_error_message_box from openlp.core.utils import AppLocation, clean_filename +import upgrade log = logging.getLogger(__name__) @@ -147,7 +148,7 @@ class BibleDB(QtCore.QObject, Manager): self.file = clean_filename(self.name) + u'.sqlite' if u'file' in kwargs: self.file = kwargs[u'file'] - Manager.__init__(self, u'bibles', init_schema, self.file) + Manager.__init__(self, u'bibles', init_schema, self.file, upgrade) if u'file' in kwargs: self.get_name() if u'path' in kwargs: @@ -167,7 +168,7 @@ class BibleDB(QtCore.QObject, Manager): """ Returns the version name of the Bible. """ - version_name = self.get_object(BibleMeta, u'Version') + version_name = self.get_object(BibleMeta, u'name') self.name = version_name.value if version_name else None return self.name @@ -483,7 +484,7 @@ class BibleDB(QtCore.QObject, Manager): prior to 1.9.6. """ try: - columns = self.session.query(Book).all() + self.session.query(Book).all() except: return True return False @@ -550,16 +551,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager): log.debug(u'BiblesResourcesDB.get_books()') books = BiblesResourcesDB.run_sql(u'SELECT id, testament_id, name, ' u'abbreviation, chapters FROM book_reference ORDER BY id') - return [ - { - u'id': book[0], - u'testament_id': book[1], - u'name': unicode(book[2]), - u'abbreviation': unicode(book[3]), - u'chapters': book[4] - } - for book in books - ] + return [{ + u'id': book[0], + u'testament_id': book[1], + u'name': unicode(book[2]), + u'abbreviation': unicode(book[3]), + u'chapters': book[4] + } for book in books] @staticmethod def get_book(name, lower=False): @@ -601,7 +599,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): Return the books which include string. ``string`` - The string to search for in the booknames or abbreviations. + The string to search for in the book names or abbreviations. """ log.debug(u'BiblesResourcesDB.get_book_like("%s")', string) if not isinstance(string, unicode): @@ -611,16 +609,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'LOWER(name) LIKE ? OR LOWER(abbreviation) LIKE ?', (u'%' + string.lower() + u'%', u'%' + string.lower() + u'%')) if books: - return [ - { + return [{ u'id': book[0], u'testament_id': book[1], u'name': unicode(book[2]), u'abbreviation': unicode(book[3]), u'chapters': book[4] - } - for book in books - ] + } for book in books] else: return None @@ -747,16 +742,13 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'language_id, download_source_id FROM webbibles WHERE ' u'download_source_id = ?', (source[u'id'],)) if bibles: - return [ - { + return [{ u'id': bible[0], u'name': bible[1], u'abbreviation': bible[2], u'language_id': bible[3], u'download_source_id': bible[4] - } - for bible in bibles - ] + } for bible in bibles] else: return None @@ -789,7 +781,7 @@ class BiblesResourcesDB(QtCore.QObject, Manager): u'abbreviation': bible[0][2], u'language_id': bible[0][3], u'download_source_id': bible[0][4] - } + } except (IndexError, TypeError): return None @@ -850,14 +842,11 @@ class BiblesResourcesDB(QtCore.QObject, Manager): languages = BiblesResourcesDB.run_sql(u'SELECT id, name, code FROM ' u'language ORDER by name') if languages: - return [ - { + return [{ u'id': language[0], u'name': unicode(language[1]), u'code': unicode(language[2]) - } - for language in languages - ] + } for language in languages] else: return None @@ -1036,7 +1025,7 @@ class OldBibleDB(QtCore.QObject, Manager): Returns the version name of the Bible. """ version_name = self.run_sql(u'SELECT value FROM ' - u'metadata WHERE key = "Version"') + u'metadata WHERE key = "name"') if version_name: self.name = version_name[0][0] else: @@ -1050,13 +1039,10 @@ class OldBibleDB(QtCore.QObject, Manager): metadata = self.run_sql(u'SELECT key, value FROM metadata ' u'ORDER BY rowid') if metadata: - return [ - { + return [{ u'key': unicode(meta[0]), u'value': unicode(meta[1]) - } - for meta in metadata - ] + } for meta in metadata] else: return None @@ -1088,13 +1074,10 @@ class OldBibleDB(QtCore.QObject, Manager): """ books = self.run_sql(u'SELECT name, id FROM book ORDER BY id') if books: - return [ - { + return [{ u'name': unicode(book[0]), u'id':int(book[1]) - } - for book in books - ] + } for book in books] else: return None @@ -1105,15 +1088,12 @@ class OldBibleDB(QtCore.QObject, Manager): verses = self.run_sql(u'SELECT book_id, chapter, verse, text FROM ' u'verse WHERE book_id = ? ORDER BY id', (book_id, )) if verses: - return [ - { + return [{ u'book_id': int(verse[0]), u'chapter': int(verse[1]), u'verse': int(verse[2]), u'text': unicode(verse[3]) - } - for verse in verses - ] + } for verse in verses] else: return None diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 5880f85f7..51c88c543 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -54,23 +54,23 @@ class BGExtract(object): self.proxyurl = proxyurl socket.setdefaulttimeout(30) - def get_bible_chapter(self, version, bookname, chapter): + def get_bible_chapter(self, version, book_name, chapter): """ Access and decode Bibles via the BibleGateway website. ``version`` The version of the Bible like 31 for New International version. - ``bookname`` + ``book_name`` Name of the Book. ``chapter`` Chapter number. """ log.debug(u'BGExtract.get_bible_chapter("%s", "%s", "%s")', version, - bookname, chapter) - urlbookname = urllib.quote(bookname.encode("utf-8")) - url_params = u'search=%s+%s&version=%s' % (urlbookname, chapter, + book_name, chapter) + url_book_name = urllib.quote(book_name.encode("utf-8")) + url_params = u'search=%s+%s&version=%s' % (url_book_name, chapter, version) cleaner = [(re.compile(' |
|\'\+\''), lambda match: '')] soup = get_soup_for_bible_ref( @@ -120,7 +120,7 @@ class BGExtract(object): clean_verse_num = int(str(raw_verse_num)) except ValueError: log.warn(u'Illegal verse number in %s %s %s:%s', - version, bookname, chapter, unicode(raw_verse_num)) + version, book_name, chapter, unicode(raw_verse_num)) if clean_verse_num: verse_text = raw_verse_num.next part = raw_verse_num.next.next @@ -138,7 +138,7 @@ class BGExtract(object): log.debug(u'No content found in the BibleGateway response.') send_error_message(u'parse') return None - return SearchResults(bookname, chapter, verse_list) + return SearchResults(book_name, chapter, verse_list) def get_books_from_http(self, version): """ @@ -200,25 +200,25 @@ class BSExtract(object): self.proxyurl = proxyurl socket.setdefaulttimeout(30) - def get_bible_chapter(self, version, bookname, chapter): + def get_bible_chapter(self, version, book_name, chapter): """ Access and decode bibles via Bibleserver mobile website ``version`` The version of the bible like NIV for New International Version - ``bookname`` + ``book_name`` Text name of bible book e.g. Genesis, 1. John, 1John or Offenbarung ``chapter`` Chapter number """ log.debug(u'BSExtract.get_bible_chapter("%s", "%s", "%s")', version, - bookname, chapter) - urlversion = urllib.quote(version.encode("utf-8")) - urlbookname = urllib.quote(bookname.encode("utf-8")) + book_name, chapter) + url_version = urllib.quote(version.encode("utf-8")) + url_book_name = urllib.quote(book_name.encode("utf-8")) chapter_url = u'http://m.bibleserver.com/text/%s/%s%d' % \ - (urlversion, urlbookname, chapter) + (url_version, url_book_name, chapter) header = (u'Accept-Language', u'en') soup = get_soup_for_bible_ref(chapter_url, header) if not soup: @@ -236,7 +236,7 @@ class BSExtract(object): Receiver.send_message(u'openlp_process_events') versenumber = int(verse_number.sub(r'\3', verse[u'class'])) verses[versenumber] = verse.contents[1].rstrip(u'\n') - return SearchResults(bookname, chapter, verses) + return SearchResults(book_name, chapter, verses) def get_books_from_http(self, version): """ @@ -273,67 +273,67 @@ class CWExtract(object): self.proxyurl = proxyurl socket.setdefaulttimeout(30) - def get_bible_chapter(self, version, bookname, chapter): + def get_bible_chapter(self, version, book_name, chapter): """ Access and decode bibles via the Crosswalk website ``version`` The version of the Bible like niv for New International Version - ``bookname`` + ``book_name`` Text name of in english e.g. 'gen' for Genesis ``chapter`` Chapter number """ log.debug(u'CWExtract.get_bible_chapter("%s", "%s", "%s")', version, - bookname, chapter) - urlbookname = bookname.replace(u' ', u'-') - urlbookname = urlbookname.lower() - urlbookname = urllib.quote(urlbookname.encode("utf-8")) + book_name, chapter) + url_book_name = book_name.replace(u' ', u'-') + url_book_name = url_book_name.lower() + url_book_name = urllib.quote(url_book_name.encode("utf-8")) chapter_url = u'http://www.biblestudytools.com/%s/%s/%s.html' % \ - (version, urlbookname, chapter) + (version, url_book_name, chapter) soup = get_soup_for_bible_ref(chapter_url) if not soup: return None Receiver.send_message(u'openlp_process_events') - htmlverses = soup.findAll(u'span', u'versetext') - if not htmlverses: + html_verses = soup.findAll(u'span', u'versetext') + if not html_verses: log.error(u'No verses found in the CrossWalk response.') send_error_message(u'parse') return None verses = {} reduce_spaces = re.compile(r'[ ]{2,}') fix_punctuation = re.compile(r'[ ]+([.,;])') - for verse in htmlverses: + for verse in html_verses: Receiver.send_message(u'openlp_process_events') - versenumber = int(verse.contents[0].contents[0]) - versetext = u'' + verse_number = int(verse.contents[0].contents[0]) + verse_text = u'' for part in verse.contents: Receiver.send_message(u'openlp_process_events') if isinstance(part, NavigableString): - versetext = versetext + part + verse_text = verse_text + part elif part and part.attrMap and \ (part.attrMap[u'class'] == u'WordsOfChrist' or \ part.attrMap[u'class'] == u'strongs'): for subpart in part.contents: Receiver.send_message(u'openlp_process_events') if isinstance(subpart, NavigableString): - versetext = versetext + subpart + verse_text = verse_text + subpart elif subpart and subpart.attrMap and \ subpart.attrMap[u'class'] == u'strongs': for subsub in subpart.contents: Receiver.send_message(u'openlp_process_events') if isinstance(subsub, NavigableString): - versetext = versetext + subsub + verse_text = verse_text + subsub Receiver.send_message(u'openlp_process_events') # Fix up leading and trailing spaces, multiple spaces, and spaces # between text and , and . - versetext = versetext.strip(u'\n\r\t ') - versetext = reduce_spaces.sub(u' ', versetext) - versetext = fix_punctuation.sub(r'\1', versetext) - verses[versenumber] = versetext - return SearchResults(bookname, chapter, verses) + verse_text = verse_text.strip(u'\n\r\t ') + verse_text = reduce_spaces.sub(u' ', verse_text) + verse_text = fix_punctuation.sub(r'\1', verse_text) + verses[verse_number] = verse_text + return SearchResults(book_name, chapter, verses) def get_books_from_http(self, version): """ @@ -499,10 +499,10 @@ class HTTPBible(BibleDB): ## if it was there. By reusing the returned book name ## we get a correct book. For example it is possible ## to request ac and get Acts back. - bookname = search_results.book + book_name = search_results.book Receiver.send_message(u'openlp_process_events') # Check to see if book/chapter exists. - db_book = self.get_book(bookname) + db_book = self.get_book(book_name) self.create_chapter(db_book.id, search_results.chapter, search_results.verselist) Receiver.send_message(u'openlp_process_events') diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index b0dd92e3c..37ae3cf79 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -330,7 +330,7 @@ class BibleManager(object): 'Import Wizard to install one or more Bibles.') }) return None - language_selection = self.get_meta_data(bible, u'Bookname language') + language_selection = self.get_meta_data(bible, u'book_name_language') if language_selection: language_selection = int(language_selection.value) if language_selection is None or language_selection == -1: @@ -377,7 +377,7 @@ class BibleManager(object): Unicode. The Bible to get the language selection from. """ log.debug(u'BibleManager.get_language_selection("%s")', bible) - language_selection = self.get_meta_data(bible, u'Bookname language') + language_selection = self.get_meta_data(bible, u'book_name_language') if language_selection and language_selection.value != u'None': return int(language_selection.value) if language_selection is None or language_selection.value == u'None': @@ -438,17 +438,17 @@ class BibleManager(object): return None def save_meta_data(self, bible, version, copyright, permissions, - bookname_language=None): + book_name_language=None): """ Saves the bibles meta data. """ log.debug(u'save_meta data %s, %s, %s, %s', bible, version, copyright, permissions) - self.db_cache[bible].save_meta(u'Version', version) - self.db_cache[bible].save_meta(u'Copyright', copyright) - self.db_cache[bible].save_meta(u'Permissions', permissions) - self.db_cache[bible].save_meta(u'Bookname language', - bookname_language) + self.db_cache[bible].save_meta(u'name', version) + self.db_cache[bible].save_meta(u'copyright', copyright) + self.db_cache[bible].save_meta(u'permissions', permissions) + self.db_cache[bible].save_meta(u'book_name_language', + book_name_language) def get_meta_data(self, bible, key): """ diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index bca73fc70..e3d173fad 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -64,7 +64,7 @@ class BibleMediaItem(MediaManagerItem): self.unlockIcon = build_icon(u':/bibles/bibles_search_unlock.png') MediaManagerItem.__init__(self, parent, plugin, icon) # Place to store the search results for both bibles. - self.settings = self.plugin.settings_tab + self.settings = self.plugin.settingsTab self.quickPreviewAllowed = True self.hasSearch = True self.search_results = {} @@ -433,7 +433,7 @@ class BibleMediaItem(MediaManagerItem): self.advancedBookComboBox.clear() first = True language_selection = self.plugin.manager.get_language_selection(bible) - booknames = BibleStrings().Booknames + book_names = BibleStrings().BookNames for book in book_data: row = self.advancedBookComboBox.count() if language_selection == LanguageSelection.Bible: @@ -442,7 +442,7 @@ class BibleMediaItem(MediaManagerItem): data = BiblesResourcesDB.get_book_by_id( book[u'book_reference_id']) self.advancedBookComboBox.addItem( - booknames[data[u'abbreviation']]) + book_names[data[u'abbreviation']]) elif language_selection == LanguageSelection.English: data = BiblesResourcesDB.get_book_by_id( book[u'book_reference_id']) @@ -509,12 +509,12 @@ class BibleMediaItem(MediaManagerItem): if language_selection == LanguageSelection.Bible: books = [book.name + u' ' for book in book_data] elif language_selection == LanguageSelection.Application: - booknames = BibleStrings().Booknames + book_names = BibleStrings().BookNames for book in book_data: data = BiblesResourcesDB.get_book_by_id( book.book_reference_id) books.append(unicode( - booknames[data[u'abbreviation']]) + u' ') + book_names[data[u'abbreviation']]) + u' ') elif language_selection == LanguageSelection.English: for book in book_data: data = BiblesResourcesDB.get_book_by_id( @@ -537,7 +537,7 @@ class BibleMediaItem(MediaManagerItem): elif self.advancedTab.isVisible(): bible = unicode(self.advancedVersionComboBox.currentText()) if bible: - self.editBibleForm = EditBibleForm(self, self.plugin.formparent, + self.editBibleForm = EditBibleForm(self, self.plugin.formParent, self.plugin.manager) self.editBibleForm.loadBible(bible) if self.editBibleForm.exec_(): @@ -806,30 +806,30 @@ class BibleMediaItem(MediaManagerItem): further action is saved for/in each row. """ verse_separator = get_reference_separator(u'sep_v_display') - version = self.plugin.manager.get_meta_data(bible, u'Version').value - copyright = self.plugin.manager.get_meta_data(bible, u'Copyright').value + version = self.plugin.manager.get_meta_data(bible, u'name').value + copyright = self.plugin.manager.get_meta_data(bible, u'copyright').value permissions = \ - self.plugin.manager.get_meta_data(bible, u'Permissions').value + self.plugin.manager.get_meta_data(bible, u'permissions').value second_version = u'' second_copyright = u'' second_permissions = u'' if second_bible: second_version = self.plugin.manager.get_meta_data( - second_bible, u'Version').value + second_bible, u'name').value second_copyright = self.plugin.manager.get_meta_data( - second_bible, u'Copyright').value + second_bible, u'copyright').value second_permissions = self.plugin.manager.get_meta_data( - second_bible, u'Permissions').value + second_bible, u'permissions').value items = [] language_selection = self.plugin.manager.get_language_selection(bible) for count, verse in enumerate(search_results): if language_selection == LanguageSelection.Bible: book = verse.book.name elif language_selection == LanguageSelection.Application: - booknames = BibleStrings().Booknames + book_names = BibleStrings().Booknames data = BiblesResourcesDB.get_book_by_id( verse.book.book_reference_id) - book = unicode(booknames[data[u'abbreviation']]) + book = unicode(book_names[data[u'abbreviation']]) elif language_selection == LanguageSelection.English: data = BiblesResourcesDB.get_book_by_id( verse.book.book_reference_id) diff --git a/openlp/plugins/bibles/lib/upgrade.py b/openlp/plugins/bibles/lib/upgrade.py new file mode 100644 index 000000000..c8b5f61ba --- /dev/null +++ b/openlp/plugins/bibles/lib/upgrade.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2012 Raoul Snyman # +# Portions copyright (c) 2008-2012 Tim Bentley, Gerald Britton, Jonathan # +# Corwin, Michael Gorven, Scott Guerrieri, Matthias Hub, Meinert Jordan, # +# Armin Köhler, Joshua Miller, Stevan Pettit, Andreas Preikschat, Mattias # +# Põldaru, Christian Richter, Philip Ridout, Simon Scudder, Jeffrey Smith, # +# Maikel Stuivenberg, Martin Thompson, Jon Tibble, Frode Woldsund # +# --------------------------------------------------------------------------- # +# 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; version 2 of the License. # +# # +# 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., 59 # +# Temple Place, Suite 330, Boston, MA 02111-1307 USA # +############################################################################### +""" +The :mod:`upgrade` module provides a way for the database and schema that is the +backend for the Bibles plugin +""" + +from sqlalchemy import Table, update, or_ + +__version__ = 1 + +def upgrade_setup(metadata): + """ + Set up the latest revision all tables, with reflection, needed for the + upgrade process. If you want to drop a table, you need to remove it from + here, and add it to your upgrade function. + """ + # Don't define the "metadata" table, as the upgrade mechanism already + # defines it. + tables = { + u'book': Table(u'book', metadata, autoload=True), + u'verse': Table(u'verse', metadata, autoload=True) + } + return tables + + +def upgrade_1(session, metadata, tables): + """ + Version 1 upgrade. + + This upgrade renames a number of keys to a single naming convention.. + """ + metadata_table = metadata.tables[u'metadata'] + # Rename "Bookname language" to "book_name_language" + session.execute(update(metadata_table)\ + .where(or_(metadata_table.c.key == u'bookname language', + metadata_table.c.key == u'Bookname language'))\ + .values(key=u'book_name_language')) + # Rename "Copyright" to "copyright" + session.execute(update(metadata_table)\ + .where(metadata_table.c.key == u'Copyright').values(key=u'copyright')) + # Rename "Version" to "name" ("version" used by upgrade system) + session.execute(update(metadata_table)\ + .where(metadata_table.c.key == u'Version').values(key=u'name')) + # Rename "Permissions" to "permissions" + session.execute(update(metadata_table)\ + .where(metadata_table.c.key == u'Permissions')\ + .values(key=u'permissions')) + session.commit() diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py index 5cf872990..541403cda 100644 --- a/openlp/plugins/custom/lib/mediaitem.py +++ b/openlp/plugins/custom/lib/mediaitem.py @@ -57,7 +57,7 @@ class CustomMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'custom/custom' MediaManagerItem.__init__(self, parent, plugin, icon) - self.edit_custom_form = EditCustomForm(self, self.plugin.formparent, + self.edit_custom_form = EditCustomForm(self, self.plugin.formParent, self.plugin.manager) self.singleServiceItem = False self.quickPreviewAllowed = True diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index 702bc7e96..ffa67b95e 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -106,24 +106,24 @@ class ImageMediaItem(MediaManagerItem): row_list = [item.row() for item in self.listView.selectedIndexes()] row_list.sort(reverse=True) Receiver.send_message(u'cursor_busy') - self.plugin.formparent.displayProgressBar(len(row_list)) + self.plugin.formParent.displayProgressBar(len(row_list)) for row in row_list: text = self.listView.item(row) if text: delete_file(os.path.join(self.servicePath, unicode(text.text()))) self.listView.takeItem(row) - self.plugin.formparent.incrementProgressBar() + self.plugin.formParent.incrementProgressBar() SettingsManager.set_list(self.settingsSection, u'images', self.getFileList()) - self.plugin.formparent.finishedProgressBar() + self.plugin.formParent.finishedProgressBar() Receiver.send_message(u'cursor_normal') self.listView.blockSignals(False) def loadList(self, images, initialLoad=False): if not initialLoad: Receiver.send_message(u'cursor_busy') - self.plugin.formparent.displayProgressBar(len(images)) + self.plugin.formParent.displayProgressBar(len(images)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! images.sort(cmp=locale.strcoll, @@ -144,9 +144,9 @@ class ImageMediaItem(MediaManagerItem): item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(imageFile)) self.listView.addItem(item_name) if not initialLoad: - self.plugin.formparent.incrementProgressBar() + self.plugin.formParent.incrementProgressBar() if not initialLoad: - self.plugin.formparent.finishedProgressBar() + self.plugin.formParent.finishedProgressBar() Receiver.send_message(u'cursor_normal') def generateSlideData(self, service_item, item=None, xmlVersion=False, diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index cd3f8b3dd..a50d8b24d 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -59,7 +59,7 @@ class MediaPlugin(Plugin): Create the settings Tab """ visible_name = self.getString(StringContent.VisibleName) - self.settings_tab = MediaTab(parent, self.name, visible_name[u'title'], + self.settingsTab = MediaTab(parent, self.name, visible_name[u'title'], self.mediaController.mediaPlayers, self.icon_path) def about(self): @@ -142,6 +142,6 @@ class MediaPlugin(Plugin): self.mediaController.mediaPlayers[u'phonon'].isActive = True settings.setValue(u'players', \ QtCore.QVariant(u','.join(new_players))) - self.settings_tab.load() + self.settingsTab.load() settings.remove(u'use phonon') settings.endGroup() diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py index a94929b45..f1452f034 100644 --- a/openlp/plugins/presentations/lib/mediaitem.py +++ b/openlp/plugins/presentations/lib/mediaitem.py @@ -166,14 +166,14 @@ class PresentationMediaItem(MediaManagerItem): Receiver.send_message(u'cursor_busy') if not initialLoad: Receiver.send_message(u'cursor_busy') - self.plugin.formparent.displayProgressBar(len(files)) + self.plugin.formParent.displayProgressBar(len(files)) # Sort the themes by its filename considering language specific # characters. lower() is needed for windows! files.sort(cmp=locale.strcoll, key=lambda filename: os.path.split(unicode(filename))[1].lower()) for file in files: if not initialLoad: - self.plugin.formparent.incrementProgressBar() + self.plugin.formParent.incrementProgressBar() if currlist.count(file) > 0: continue filename = os.path.split(unicode(file))[1] @@ -217,7 +217,7 @@ class PresentationMediaItem(MediaManagerItem): self.listView.addItem(item_name) Receiver.send_message(u'cursor_normal') if not initialLoad: - self.plugin.formparent.finishedProgressBar() + self.plugin.formParent.finishedProgressBar() Receiver.send_message(u'cursor_normal') def onDeleteClick(self): @@ -229,7 +229,7 @@ class PresentationMediaItem(MediaManagerItem): row_list = [item.row() for item in items] row_list.sort(reverse=True) Receiver.send_message(u'cursor_busy') - self.plugin.formparent.displayProgressBar(len(row_list)) + self.plugin.formParent.displayProgressBar(len(row_list)) for item in items: filepath = unicode(item.data( QtCore.Qt.UserRole).toString()) @@ -237,8 +237,8 @@ class PresentationMediaItem(MediaManagerItem): doc = self.controllers[cidx].add_document(filepath) doc.presentation_deleted() doc.close_presentation() - self.plugin.formparent.incrementProgressBar() - self.plugin.formparent.finishedProgressBar() + self.plugin.formParent.incrementProgressBar() + self.plugin.formParent.finishedProgressBar() Receiver.send_message(u'cursor_normal') for row in row_list: self.listView.takeItem(row) diff --git a/openlp/plugins/presentations/presentationplugin.py b/openlp/plugins/presentations/presentationplugin.py index 7121aff27..2c38be30d 100644 --- a/openlp/plugins/presentations/presentationplugin.py +++ b/openlp/plugins/presentations/presentationplugin.py @@ -62,7 +62,7 @@ class PresentationPlugin(Plugin): Create the settings Tab """ visible_name = self.getString(StringContent.VisibleName) - self.settings_tab = PresentationTab(parent, self.name, + self.settingsTab = PresentationTab(parent, self.name, visible_name[u'title'], self.controllers, self.icon_path) def initialise(self): @@ -99,7 +99,7 @@ class PresentationPlugin(Plugin): Create the Media Manager List """ self.mediaItem = PresentationMediaItem( - self.mediadock.media_dock, self, self.icon, self.controllers) + self.mediaDock.media_dock, self, self.icon, self.controllers) def registerControllers(self, controller): """ diff --git a/openlp/plugins/songs/forms/songimportform.py b/openlp/plugins/songs/forms/songimportform.py index be8fce9a0..9498d1c79 100644 --- a/openlp/plugins/songs/forms/songimportform.py +++ b/openlp/plugins/songs/forms/songimportform.py @@ -57,7 +57,7 @@ class SongImportForm(OpenLPWizard): ``plugin`` The songs plugin. """ - self.clipboard = plugin.formparent.clipboard + self.clipboard = plugin.formParent.clipboard OpenLPWizard.__init__(self, parent, plugin, u'songImportWizard', u':/wizards/wizard_importsong.bmp') diff --git a/openlp/plugins/songs/lib/foilpresenterimport.py b/openlp/plugins/songs/lib/foilpresenterimport.py index fd2a9992b..536c699d2 100644 --- a/openlp/plugins/songs/lib/foilpresenterimport.py +++ b/openlp/plugins/songs/lib/foilpresenterimport.py @@ -413,7 +413,7 @@ class FoilPresenter(object): temp_verse_order_backup = [] temp_sortnr_backup = 1 temp_sortnr_liste = [] - versenumber = { + verse_count = { VerseType.Tags[VerseType.Verse]: 1, VerseType.Tags[VerseType.Chorus]: 1, VerseType.Tags[VerseType.Bridge]: 1, @@ -463,8 +463,8 @@ class FoilPresenter(object): verse_number = re.compile(u'[a-zA-Z.+-_ ]*').sub(u'', verse_name) # Foilpresenter allows e. g. "C", but we need "C1". if not verse_number: - verse_number = unicode(versenumber[verse_type]) - versenumber[verse_type] += 1 + verse_number = unicode(verse_count[verse_type]) + verse_count[verse_type] += 1 else: # test if foilpresenter have the same versenumber two times with # different parts raise the verse number @@ -508,13 +508,13 @@ class FoilPresenter(object): song.song_number = u'' try: for bucheintrag in foilpresenterfolie.buch.bucheintrag: - bookname = self._child(bucheintrag.name) - if bookname: + book_name = self._child(bucheintrag.name) + if book_name: book = self.manager.get_object_filtered(Book, - Book.name == bookname) + Book.name == book_name) if book is None: # We need to create a book, because it does not exist. - book = Book.populate(name=bookname, publisher=u'') + book = Book.populate(name=book_name, publisher=u'') self.manager.save_object(book) song.song_book_id = book.id try: @@ -537,12 +537,12 @@ class FoilPresenter(object): ``song`` The song object. """ - for titelstring in foilpresenterfolie.titel.titelstring: + for title_string in foilpresenterfolie.titel.titelstring: if not song.title: - song.title = self._child(titelstring) + song.title = self._child(title_string) song.alternate_title = u'' else: - song.alternate_title = self._child(titelstring) + song.alternate_title = self._child(title_string) def _process_topics(self, foilpresenterfolie, song): """ @@ -556,13 +556,13 @@ class FoilPresenter(object): """ try: for name in foilpresenterfolie.kategorien.name: - topictext = self._child(name) - if topictext: + topic_text = self._child(name) + if topic_text: topic = self.manager.get_object_filtered(Topic, - Topic.name == topictext) + Topic.name == topic_text) if topic is None: # We need to create a topic, because it does not exist. - topic = Topic.populate(name=topictext) + topic = Topic.populate(name=topic_text) self.manager.save_object(topic) song.topics.append(topic) except AttributeError: diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index dd398ec1c..2836e98ad 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -68,7 +68,7 @@ class SongMediaItem(MediaManagerItem): def __init__(self, parent, plugin, icon): self.IconPath = u'songs/song' MediaManagerItem.__init__(self, parent, plugin, icon) - self.editSongForm = EditSongForm(self, self.plugin.formparent, + self.editSongForm = EditSongForm(self, self.plugin.formParent, self.plugin.manager) self.openLyrics = OpenLyrics(self.plugin.manager) self.singleServiceItem = False @@ -409,7 +409,7 @@ class SongMediaItem(MediaManagerItem): QtGui.QMessageBox.Yes) == QtGui.QMessageBox.No: return Receiver.send_message(u'cursor_busy') - self.plugin.formparent.displayProgressBar(len(items)) + self.plugin.formParent.displayProgressBar(len(items)) for item in items: item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] media_files = self.plugin.manager.get_all_objects(MediaFile, @@ -428,8 +428,8 @@ class SongMediaItem(MediaManagerItem): except OSError: log.exception(u'Could not remove directory: %s', save_path) self.plugin.manager.delete_object(Song, item_id) - self.plugin.formparent.incrementProgressBar() - self.plugin.formparent.finishedProgressBar() + self.plugin.formParent.incrementProgressBar() + self.plugin.formParent.finishedProgressBar() Receiver.send_message(u'cursor_normal') self.onSearchTextButtonClicked() diff --git a/openlp/plugins/songs/lib/olp1import.py b/openlp/plugins/songs/lib/olp1import.py index b4f0721a6..05095aa31 100644 --- a/openlp/plugins/songs/lib/olp1import.py +++ b/openlp/plugins/songs/lib/olp1import.py @@ -60,7 +60,7 @@ class OpenLP1SongImport(SongImport): """ SongImport.__init__(self, manager, **kwargs) self.availableThemes = \ - kwargs[u'plugin'].formparent.themeManagerContents.getThemes() + kwargs[u'plugin'].formParent.themeManagerContents.getThemes() def doImport(self): """ diff --git a/openlp/plugins/songs/lib/upgrade.py b/openlp/plugins/songs/lib/upgrade.py index ec69751fb..2b82f12bc 100644 --- a/openlp/plugins/songs/lib/upgrade.py +++ b/openlp/plugins/songs/lib/upgrade.py @@ -75,6 +75,7 @@ def upgrade_1(session, metadata, tables): ForeignKeyConstraint([u'song_id'], [u'songs.id'], table=tables[u'media_files']).create() + def upgrade_2(session, metadata, tables): """ Version 2 upgrade. @@ -86,6 +87,7 @@ def upgrade_2(session, metadata, tables): Column(u'last_modified', types.DateTime(), default=func.now())\ .create(table=tables[u'songs']) + def upgrade_3(session, metadata, tables): """ Version 3 upgrade. diff --git a/openlp/plugins/songs/lib/xml.py b/openlp/plugins/songs/lib/xml.py index 88fd55789..816742d11 100644 --- a/openlp/plugins/songs/lib/xml.py +++ b/openlp/plugins/songs/lib/xml.py @@ -521,9 +521,9 @@ class OpenLyrics(object): if hasattr(properties, u'comments'): comments_list = [] for comment in properties.comments.comment: - commenttext = self._text(comment) - if commenttext: - comments_list.append(commenttext) + comment_text = self._text(comment) + if comment_text: + comments_list.append(comment_text) song.comments = u'\n'.join(comments_list) def _process_copyright(self, properties, song): @@ -746,13 +746,13 @@ class OpenLyrics(object): song.song_number = u'' if hasattr(properties, u'songbooks'): for songbook in properties.songbooks.songbook: - bookname = songbook.get(u'name', u'') - if bookname: + book_name = songbook.get(u'name', u'') + if book_name: book = self.manager.get_object_filtered(Book, - Book.name == bookname) + Book.name == book_name) if book is None: # We need to create a book, because it does not exist. - book = Book.populate(name=bookname, publisher=u'') + book = Book.populate(name=book_name, publisher=u'') self.manager.save_object(book) song.song_book_id = book.id song.song_number = songbook.get(u'entry', u'') @@ -787,14 +787,14 @@ class OpenLyrics(object): The song object. """ if hasattr(properties, u'themes'): - for topictext in properties.themes.theme: - topictext = self._text(topictext) - if topictext: + for topic_text in properties.themes.theme: + topic_text = self._text(topic_text) + if topic_text: topic = self.manager.get_object_filtered(Topic, - Topic.name == topictext) + Topic.name == topic_text) if topic is None: # We need to create a topic, because it does not exist. - topic = Topic.populate(name=topictext) + topic = Topic.populate(name=topic_text) self.manager.save_object(topic) song.topics.append(topic) @@ -813,6 +813,7 @@ class OpenLyricsError(Exception): VerseError = 2 def __init__(self, type, log_message, display_message): + Exception.__init__(self) self.type = type self.log_message = log_message self.display_message = display_message diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 47b293310..4e2d65e8b 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -144,7 +144,7 @@ class SongsPlugin(Plugin): return progressDialog = QtGui.QProgressDialog( translate('SongsPlugin', 'Reindexing songs...'), UiStrings().Cancel, - 0, maxSongs, self.formparent) + 0, maxSongs, self.formParent) progressDialog.setWindowModality(QtCore.Qt.WindowModal) songs = self.manager.get_all_objects(Song) for number, song in enumerate(songs): @@ -241,7 +241,7 @@ class SongsPlugin(Plugin): song_dbs.append(os.path.join(db_dir, sfile)) if len(song_dbs) == 0: return - progress = QtGui.QProgressDialog(self.formparent) + progress = QtGui.QProgressDialog(self.formParent) progress.setWindowModality(QtCore.Qt.WindowModal) progress.setLabelText(translate('OpenLP.Ui', 'Starting import...')) progress.setCancelButton(None) diff --git a/openlp/plugins/songusage/songusageplugin.py b/openlp/plugins/songusage/songusageplugin.py index 157929f2f..7746f9b28 100644 --- a/openlp/plugins/songusage/songusageplugin.py +++ b/openlp/plugins/songusage/songusageplugin.py @@ -98,13 +98,13 @@ class SongUsagePlugin(Plugin): self.songUsageMenu.addAction(self.songUsageReport) self.songUsageMenu.addAction(self.songUsageDelete) self.songUsageActiveButton = QtGui.QToolButton( - self.formparent.statusBar) + self.formParent.statusBar) self.songUsageActiveButton.setCheckable(True) self.songUsageActiveButton.setAutoRaise(True) self.songUsageActiveButton.setStatusTip(translate('SongUsagePlugin', 'Toggle the tracking of song usage.')) self.songUsageActiveButton.setObjectName(u'songUsageActiveButton') - self.formparent.statusBar.insertPermanentWidget(1, + self.formParent.statusBar.insertPermanentWidget(1, self.songUsageActiveButton) self.songUsageActiveButton.hide() # Signals and slots @@ -138,8 +138,8 @@ class SongUsagePlugin(Plugin): action_list.add_action(self.songUsageReport, unicode(translate('SongUsagePlugin', 'Song Usage'))) self.songUsageDeleteForm = SongUsageDeleteForm(self.manager, - self.formparent) - self.songUsageDetailForm = SongUsageDetailForm(self, self.formparent) + self.formParent) + self.songUsageDetailForm = SongUsageDetailForm(self, self.formParent) self.songUsageMenu.menuAction().setVisible(True) self.songUsageActiveButton.show()