forked from openlp/openlp
Cleanup the OpenLPv2 song importer
This commit is contained in:
parent
364940c547
commit
6266c3369e
@ -302,8 +302,8 @@ class ImportWizardForm(QtGui.QWizard, Ui_SongImportWizard):
|
|||||||
Stop the import on pressing the cancel button.
|
Stop the import on pressing the cancel button.
|
||||||
"""
|
"""
|
||||||
log.debug('Cancel button pressed!')
|
log.debug('Cancel button pressed!')
|
||||||
if self.currentId() == 3:
|
if self.currentId() == 2:
|
||||||
Receiver.send_message(u'song_stop_import')
|
Receiver.send_message(u'songs_stop_import')
|
||||||
|
|
||||||
def onCurrentIdChanged(self, id):
|
def onCurrentIdChanged(self, id):
|
||||||
if id == 2:
|
if id == 2:
|
||||||
|
@ -75,18 +75,17 @@ class OpenLPSongImport(SongImport):
|
|||||||
The :class:`OpenLPSongImport` class provides OpenLP with the ability to
|
The :class:`OpenLPSongImport` class provides OpenLP with the ability to
|
||||||
import song databases from other installations of OpenLP.
|
import song databases from other installations of OpenLP.
|
||||||
"""
|
"""
|
||||||
def __init__(self, master_manager, **kwargs):
|
def __init__(self, manager, **kwargs):
|
||||||
"""
|
"""
|
||||||
Initialise the import.
|
Initialise the import.
|
||||||
|
|
||||||
``master_manager``
|
``manager``
|
||||||
The song manager for the running OpenLP installation.
|
The song manager for the running OpenLP installation.
|
||||||
|
|
||||||
``source_db``
|
``source_db``
|
||||||
The database providing the data to import.
|
The database providing the data to import.
|
||||||
"""
|
"""
|
||||||
SongImport.__init__(self, master_manager)
|
SongImport.__init__(self, manager)
|
||||||
self.master_manager = master_manager
|
|
||||||
self.import_source = u'sqlite:///%s' % kwargs[u'filename']
|
self.import_source = u'sqlite:///%s' % kwargs[u'filename']
|
||||||
log.debug(self.import_source)
|
log.debug(self.import_source)
|
||||||
self.source_session = None
|
self.source_session = None
|
||||||
@ -145,7 +144,12 @@ class OpenLPSongImport(SongImport):
|
|||||||
mapper(OldTopic, source_topics_table)
|
mapper(OldTopic, source_topics_table)
|
||||||
|
|
||||||
source_songs = self.source_session.query(OldSong).all()
|
source_songs = self.source_session.query(OldSong).all()
|
||||||
|
song_total = len(source_songs)
|
||||||
|
self.import_wizard.importProgressBar.setMaximum(song_total)
|
||||||
|
song_count = 1
|
||||||
for song in source_songs:
|
for song in source_songs:
|
||||||
|
self.import_wizard.incrementProgressBar(
|
||||||
|
u'Importing song %s of %s' % (song_count, song_total))
|
||||||
new_song = Song()
|
new_song = Song()
|
||||||
new_song.title = song.title
|
new_song.title = song.title
|
||||||
if has_media_files:
|
if has_media_files:
|
||||||
@ -167,7 +171,7 @@ class OpenLPSongImport(SongImport):
|
|||||||
new_song.ccli_number = song.ccli_number
|
new_song.ccli_number = song.ccli_number
|
||||||
if song.authors:
|
if song.authors:
|
||||||
for author in song.authors:
|
for author in song.authors:
|
||||||
existing_author = self.master_manager.get_object_filtered(
|
existing_author = self.manager.get_object_filtered(
|
||||||
Author, Author.display_name == author.display_name)
|
Author, Author.display_name == author.display_name)
|
||||||
if existing_author:
|
if existing_author:
|
||||||
new_song.authors.append(existing_author)
|
new_song.authors.append(existing_author)
|
||||||
@ -177,7 +181,7 @@ class OpenLPSongImport(SongImport):
|
|||||||
last_name=author.last_name,
|
last_name=author.last_name,
|
||||||
display_name=author.display_name))
|
display_name=author.display_name))
|
||||||
else:
|
else:
|
||||||
au = self.master_manager.get_object_filtered(Author,
|
au = self.manager.get_object_filtered(Author,
|
||||||
Author.display_name == u'Author Unknown')
|
Author.display_name == u'Author Unknown')
|
||||||
if au:
|
if au:
|
||||||
new_song.authors.append(au)
|
new_song.authors.append(au)
|
||||||
@ -185,7 +189,7 @@ class OpenLPSongImport(SongImport):
|
|||||||
new_song.authors.append(Author.populate(
|
new_song.authors.append(Author.populate(
|
||||||
display_name=u'Author Unknown'))
|
display_name=u'Author Unknown'))
|
||||||
if song.book:
|
if song.book:
|
||||||
existing_song_book = self.master_manager.get_object_filtered(
|
existing_song_book = self.manager.get_object_filtered(
|
||||||
Book, Book.name == song.book.name)
|
Book, Book.name == song.book.name)
|
||||||
if existing_song_book:
|
if existing_song_book:
|
||||||
new_song.book = existing_song_book
|
new_song.book = existing_song_book
|
||||||
@ -194,7 +198,7 @@ class OpenLPSongImport(SongImport):
|
|||||||
publisher=song.book.publisher)
|
publisher=song.book.publisher)
|
||||||
if song.topics:
|
if song.topics:
|
||||||
for topic in song.topics:
|
for topic in song.topics:
|
||||||
existing_topic = self.master_manager.get_object_filtered(
|
existing_topic = self.manager.get_object_filtered(
|
||||||
Topic, Topic.name == topic.name)
|
Topic, Topic.name == topic.name)
|
||||||
if existing_topic:
|
if existing_topic:
|
||||||
new_song.topics.append(existing_topic)
|
new_song.topics.append(existing_topic)
|
||||||
@ -204,12 +208,16 @@ class OpenLPSongImport(SongImport):
|
|||||||
# if song.media_files:
|
# if song.media_files:
|
||||||
# for media_file in song.media_files:
|
# for media_file in song.media_files:
|
||||||
# existing_media_file = \
|
# existing_media_file = \
|
||||||
# self.master_manager.get_object_filtered(MediaFile,
|
# self.manager.get_object_filtered(MediaFile,
|
||||||
# MediaFile.file_name == media_file.file_name)
|
# MediaFile.file_name == media_file.file_name)
|
||||||
# if existing_media_file:
|
# if existing_media_file:
|
||||||
# new_song.media_files.append(existing_media_file)
|
# new_song.media_files.append(existing_media_file)
|
||||||
# else:
|
# else:
|
||||||
# new_song.media_files.append(MediaFile.populate(
|
# new_song.media_files.append(MediaFile.populate(
|
||||||
# file_name=media_file.file_name))
|
# file_name=media_file.file_name))
|
||||||
self.master_manager.save_object(new_song)
|
self.manager.save_object(new_song)
|
||||||
|
song_count += 1
|
||||||
|
if self.stop_import_flag:
|
||||||
|
return False
|
||||||
engine.dispose()
|
engine.dispose()
|
||||||
|
return True
|
||||||
|
@ -24,14 +24,18 @@
|
|||||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
import logging
|
||||||
import re
|
import re
|
||||||
|
from PyQt4 import QtCore
|
||||||
|
|
||||||
from openlp.core.lib import translate
|
from openlp.core.lib import Receiver, translate
|
||||||
from openlp.plugins.songs.lib import VerseType
|
from openlp.plugins.songs.lib import VerseType
|
||||||
from openlp.plugins.songs.lib.db import Song, Author, Topic, Book
|
from openlp.plugins.songs.lib.db import Song, Author, Topic, Book
|
||||||
from openlp.plugins.songs.lib.xml import SongXMLBuilder
|
from openlp.plugins.songs.lib.xml import SongXMLBuilder
|
||||||
|
|
||||||
class SongImport(object):
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class SongImport(QtCore.QObject):
|
||||||
"""
|
"""
|
||||||
Helper class for import a song from a third party source into OpenLP
|
Helper class for import a song from a third party source into OpenLP
|
||||||
|
|
||||||
@ -39,7 +43,6 @@ class SongImport(object):
|
|||||||
whether the authors etc already exist and add them or refer to them
|
whether the authors etc already exist and add them or refer to them
|
||||||
as necessary
|
as necessary
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, manager):
|
def __init__(self, manager):
|
||||||
"""
|
"""
|
||||||
Initialise and create defaults for properties
|
Initialise and create defaults for properties
|
||||||
@ -48,6 +51,7 @@ class SongImport(object):
|
|||||||
database access is performed
|
database access is performed
|
||||||
"""
|
"""
|
||||||
self.manager = manager
|
self.manager = manager
|
||||||
|
self.stop_import_flag = False
|
||||||
self.title = u''
|
self.title = u''
|
||||||
self.song_number = u''
|
self.song_number = u''
|
||||||
self.alternate_title = u''
|
self.alternate_title = u''
|
||||||
@ -67,6 +71,15 @@ class SongImport(object):
|
|||||||
'SongsPlugin.SongImport', 'copyright'))
|
'SongsPlugin.SongImport', 'copyright'))
|
||||||
self.copyright_symbol = unicode(translate(
|
self.copyright_symbol = unicode(translate(
|
||||||
'SongsPlugin.SongImport', '\xa9'))
|
'SongsPlugin.SongImport', '\xa9'))
|
||||||
|
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||||
|
QtCore.SIGNAL(u'songs_stop_import'), self.stop_import)
|
||||||
|
|
||||||
|
def stop_import(self):
|
||||||
|
"""
|
||||||
|
Sets the flag for importers to stop their import
|
||||||
|
"""
|
||||||
|
log.debug(u'Stopping songs import')
|
||||||
|
self.stop_import_flag = True
|
||||||
|
|
||||||
def register(self, import_wizard):
|
def register(self, import_wizard):
|
||||||
self.import_wizard = import_wizard
|
self.import_wizard = import_wizard
|
||||||
|
Loading…
Reference in New Issue
Block a user