From 06570a9941f89279f9252516cccccdd11d545814 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 4 Dec 2011 22:50:13 +0200 Subject: [PATCH 1/2] Fixed a minor bug where if you imported 2 OpenLP 2.0 databases in the same OpenLP session whose schemas were different, you'd get an error. --- openlp/plugins/songs/lib/olpimport.py | 74 +++++++++++++-------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index 598815c8f..7187950b7 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -30,7 +30,7 @@ song databases into the current installation database. """ import logging -from sqlalchemy import create_engine, MetaData +from sqlalchemy import create_engine, MetaData, Table from sqlalchemy.orm import class_mapper, mapper, relation, scoped_session, \ sessionmaker from sqlalchemy.orm.exc import UnmappedClassError @@ -44,41 +44,6 @@ from songimport import SongImport log = logging.getLogger(__name__) -class OldAuthor(BaseModel): - """ - Author model - """ - pass - - -class OldBook(BaseModel): - """ - Book model - """ - pass - - -class OldMediaFile(BaseModel): - """ - MediaFile model - """ - pass - - -class OldSong(BaseModel): - """ - Song model - """ - pass - - -class OldTopic(BaseModel): - """ - Topic model - """ - pass - - class OpenLPSongImport(SongImport): """ The :class:`OpenLPSongImport` class provides OpenLP with the ability to @@ -101,6 +66,41 @@ class OpenLPSongImport(SongImport): """ Run the import for an OpenLP version 2 song database. """ + class OldAuthor(BaseModel): + """ + Author model + """ + pass + + + class OldBook(BaseModel): + """ + Book model + """ + pass + + + class OldMediaFile(BaseModel): + """ + MediaFile model + """ + pass + + + class OldSong(BaseModel): + """ + Song model + """ + pass + + + class OldTopic(BaseModel): + """ + Topic model + """ + pass + + if not self.importSource.endswith(u'.sqlite'): self.logError(self.importSource, translate('SongsPlugin.OpenLPSongImport', @@ -138,7 +138,7 @@ class OpenLPSongImport(SongImport): secondary=source_songs_topics_table) } if has_media_files: - if source_media_files_songs_table is not None: + if isinstance(source_media_files_songs_table, Table): song_props['media_files'] = relation(OldMediaFile, backref='songs', secondary=source_media_files_songs_table) From 36e729303c925705f942d10431f5dc262c2b203f Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Tue, 6 Dec 2011 20:25:12 +0100 Subject: [PATCH 2/2] reverted changes --- openlp/core/utils/actions.py | 59 +++--------------------------------- 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/openlp/core/utils/actions.py b/openlp/core/utils/actions.py index 525a18f37..86ee69a48 100644 --- a/openlp/core/utils/actions.py +++ b/openlp/core/utils/actions.py @@ -188,7 +188,6 @@ class ActionList(object): actions or categories. """ instance = None - shortcut_map = {} def __init__(self): self.categories = CategoryList() @@ -227,41 +226,17 @@ class ActionList(object): self.categories[category].actions.append(action) else: self.categories[category].actions.add(action, weight) + if category is None: + # Stop here, as this action is not configurable. + return # Load the shortcut from the config. settings = QtCore.QSettings() settings.beginGroup(u'shortcuts') shortcuts = settings.value(action.objectName(), QtCore.QVariant(action.shortcuts())).toStringList() - settings.endGroup() - if not shortcuts: - action.setShortcuts([]) - return - shortcuts = map(unicode, shortcuts) - # Check the alternate shortcut first, to avoid problems when the - # alternate shortcut becomes the primary shortcut after removing the - # (initial) primary shortcut due to confllicts. - if len(shortcuts) == 2: - existing_actions = ActionList.shortcut_map.get(shortcuts[1], []) - # Check for conflicts with other actions considering the shortcut - # context. - if self._shortcut_available(existing_actions, action): - actions = ActionList.shortcut_map.get(shortcuts[1], []) - actions.append(action) - ActionList.shortcut_map[shortcuts[1]] = actions - else: - shortcuts.remove(shortcuts[1]) - # Check the primary shortcut. - existing_actions = ActionList.shortcut_map.get(shortcuts[0], []) - # Check for conflicts with other actions considering the shortcut - # context. - if self._shortcut_available(existing_actions, action): - actions = ActionList.shortcut_map.get(shortcuts[0], []) - actions.append(action) - ActionList.shortcut_map[shortcuts[0]] = actions - else: - shortcuts.remove(shortcuts[0]) action.setShortcuts( [QtGui.QKeySequence(shortcut) for shortcut in shortcuts]) + settings.endGroup() def remove_action(self, action, category=None): """ @@ -269,7 +244,7 @@ class ActionList(object): automatically removed. ``action`` - The ``QAction`` object to be removed. + The QAction object to be removed. ``category`` The name (unicode string) of the category, which contains the @@ -304,30 +279,6 @@ class ActionList(object): return self.categories.add(name, weight) - def _shortcut_available(self, existing_actions, action): - """ - Checks if the given ``action`` may use its assigned shortcut(s) or not. - Returns ``True`` or ``False. - - ``existing_actions`` - A list of actions which already use a particular shortcut. - - ``action`` - The action which wants to use a particular shortcut. - """ - for existing_action in existing_actions: - if action is existing_action: - continue - if existing_action.parent() is action.parent(): - return False - if existing_action.shortcutContext() in [QtCore.Qt.WindowShortcut, - QtCore.Qt.ApplicationShortcut]: - return False - if action.shortcutContext() in [QtCore.Qt.WindowShortcut, - QtCore.Qt.ApplicationShortcut]: - return False - return True - class CategoryOrder(object): """