From 5b67d36b3cc91c94ffde82adfba1ab4c9d37350d Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 3 Dec 2011 20:23:46 +0200 Subject: [PATCH 1/3] Fix problem where importing new song databases now does not work. Fixes: https://launchpad.net/bugs/863845 --- openlp/plugins/songs/lib/olpimport.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index 75e149fad..29d03a136 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -39,7 +39,7 @@ from openlp.core.lib import translate from openlp.core.lib.db import BaseModel from openlp.core.ui.wizard import WizardStrings from openlp.plugins.songs.lib import clean_song -from openlp.plugins.songs.lib.db import Author, Book, Song, Topic #, MediaFile +from openlp.plugins.songs.lib.db import Author, Book, Song, Topic, MediaFile from songimport import SongImport log = logging.getLogger(__name__) @@ -143,7 +143,8 @@ class OpenLPSongImport(SongImport): secondary=source_media_files_songs_table) else: song_props['media_files'] = relation(OldMediaFile, - backref='songs') + backref='songs', primaryjoin=source_songs_table.c.id==OldMediaFile.song_id, + foreign_keys=[source_media_files_table.c.song_id]) try: class_mapper(OldAuthor) except UnmappedClassError: From def18307ccc9d1bb7b0c95d1eee4aaae65994900 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sat, 3 Dec 2011 23:49:40 +0200 Subject: [PATCH 2/3] Avoid an error about something not being a Boolean. Fixes: https://launchpad.net/bugs/899532 --- openlp/plugins/songs/lib/olpimport.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index 29d03a136..99ca9e748 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -121,6 +121,7 @@ class OpenLPSongImport(SongImport): source_topics_table = source_meta.tables[u'topics'] source_authors_songs_table = source_meta.tables[u'authors_songs'] source_songs_topics_table = source_meta.tables[u'songs_topics'] + source_media_files_songs_table = None if has_media_files: source_media_files_table = source_meta.tables[u'media_files'] source_media_files_songs_table = \ @@ -137,7 +138,7 @@ class OpenLPSongImport(SongImport): secondary=source_songs_topics_table) } if has_media_files: - if source_media_files_songs_table: + if source_media_files_songs_table is not None: song_props['media_files'] = relation(OldMediaFile, backref='songs', secondary=source_media_files_songs_table) From 2016ce61ca220fdc7dcfe5445bb7d35966698657 Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 4 Dec 2011 00:30:22 +0200 Subject: [PATCH 3/3] Sometimes the song_id column doesn't exist on the model, so we use the table instead. --- openlp/plugins/songs/lib/olpimport.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openlp/plugins/songs/lib/olpimport.py b/openlp/plugins/songs/lib/olpimport.py index 99ca9e748..d7a735033 100644 --- a/openlp/plugins/songs/lib/olpimport.py +++ b/openlp/plugins/songs/lib/olpimport.py @@ -144,8 +144,9 @@ class OpenLPSongImport(SongImport): secondary=source_media_files_songs_table) else: song_props['media_files'] = relation(OldMediaFile, - backref='songs', primaryjoin=source_songs_table.c.id==OldMediaFile.song_id, - foreign_keys=[source_media_files_table.c.song_id]) + backref='songs', + primaryjoin=source_songs_table.c.id == \ + source_media_files_table.c.song_id) try: class_mapper(OldAuthor) except UnmappedClassError: