diff --git a/openlp/plugins/bibles/forms/bibleimportform.py b/openlp/plugins/bibles/forms/bibleimportform.py index 4a3b8ecde..f4f527e6b 100644 --- a/openlp/plugins/bibles/forms/bibleimportform.py +++ b/openlp/plugins/bibles/forms/bibleimportform.py @@ -405,6 +405,9 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard): Receiver.send_message(u'openlp_process_events') def preImport(self): + """ + Prepare the UI for the import. + """ bible_type = self.field(u'source_format').toInt()[0] self.finishButton.setVisible(False) self.ImportProgressBar.setMinimum(0) @@ -420,6 +423,9 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard): Receiver.send_message(u'openlp_process_events') def performImport(self): + """ + Perform the actual import. + """ bible_type = self.field(u'source_format').toInt()[0] license_version = unicode(self.field(u'license_version').toString()) license_copyright = unicode(self.field(u'license_copyright').toString()) @@ -469,7 +475,7 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard): elif bible_type == BibleFormat.OLP1: # Import an openlp.org 1.x bible. importer = self.manager.import_bible(BibleFormat.OLP1, - name=license_version, + name=license_version, filename=unicode(self.field(u'OLP1_location').toString()) ) if importer.do_import(): @@ -485,9 +491,8 @@ class BibleImportForm(QtGui.QWizard, Ui_BibleImportWizard): self.ImportProgressLabel.setText(translate( 'BiblesPlugin.ImportWizardForm', 'Finished import.')) else: - self.ImportProgressLabel.setText( - translate('BiblesPlugin.ImportWizardForm', - 'Your Bible import failed.')) + self.ImportProgressLabel.setText(translate( + 'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.')) delete_database(self.bibleplugin.settingsSection, importer.file) def postImport(self): diff --git a/openlp/plugins/bibles/lib/csvbible.py b/openlp/plugins/bibles/lib/csvbible.py index cc981059c..2b92891ab 100644 --- a/openlp/plugins/bibles/lib/csvbible.py +++ b/openlp/plugins/bibles/lib/csvbible.py @@ -30,7 +30,7 @@ import csv from PyQt4 import QtCore -from openlp.core.lib import Receiver +from openlp.core.lib import Receiver, translate from db import BibleDB log = logging.getLogger(__name__) @@ -46,28 +46,25 @@ class CSVBible(BibleDB): This class assumes the files contain all the information and a clean bible is being loaded. """ - BibleDB.__init__(self, parent, **kwargs) log.info(self.__class__.__name__) - if u'booksfile' not in kwargs: - raise KeyError(u'You have to supply a file to import books from.') + BibleDB.__init__(self, parent, **kwargs) self.booksfile = kwargs[u'booksfile'] - if u'versefile' not in kwargs: - raise KeyError(u'You have to supply a file to import verses from.') self.versesfile = kwargs[u'versefile'] QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'bibles_stop_import'), self.stop_import) def do_import(self): - #Populate the Tables success = True books_file = None + book_ptr = None + verse_file = None + # Populate the Tables try: books_file = open(self.booksfile, 'r') dialect = csv.Sniffer().sniff(books_file.read(1024)) books_file.seek(0) books_reader = csv.reader(books_file, dialect) for line in books_reader: - # cancel pressed if self.stop_import_flag: break details = chardet.detect(line[1]) @@ -82,25 +79,24 @@ class CSVBible(BibleDB): books_file.close() if not success: return False - verse_file = None try: - book_ptr = None verse_file = open(self.versesfile, 'r') dialect = csv.Sniffer().sniff(verse_file.read(1024)) verse_file.seek(0) verse_reader = csv.reader(verse_file, dialect) for line in verse_reader: - if self.stop_import_flag: # cancel pressed + if self.stop_import_flag: break details = chardet.detect(line[3]) if book_ptr != line[0]: book = self.get_book(line[0]) book_ptr = book.name - self.wizard.incrementProgressBar( - u'Importing %s %s' % (book.name, line[1])) + self.wizard.incrementProgressBar(u'%s %s %s...' % ( + translate('BiblesPlugin.CSVImport', 'Importing'), + book.name, line[1])) self.session.commit() self.create_verse(book.id, line[1], line[2], - unicode(line[3], details['encoding'])) + unicode(line[3], details['encoding'])) Receiver.send_message(u'openlp_process_events') self.session.commit() except IOError: @@ -110,7 +106,6 @@ class CSVBible(BibleDB): if verse_file: verse_file.close() if self.stop_import_flag: - self.wizard.incrementProgressBar(u'Import canceled!') return False else: return success diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index fa47dd7f5..dade3ad44 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -333,24 +333,17 @@ class HTTPBible(BibleDB): Init confirms the bible exists and stores the database path. """ BibleDB.__init__(self, parent, **kwargs) - if u'download_source' not in kwargs: - raise KeyError(u'Missing keyword argument "download_source"') - if u'download_name' not in kwargs: - raise KeyError(u'Missing keyword argument "download_name"') self.download_source = kwargs[u'download_source'] self.download_name = kwargs[u'download_name'] + self.proxy_server = None + self.proxy_username = None + self.proxy_password = None if u'proxy_server' in kwargs: self.proxy_server = kwargs[u'proxy_server'] - else: - self.proxy_server = None if u'proxy_username' in kwargs: self.proxy_username = kwargs[u'proxy_username'] - else: - self.proxy_username = None if u'proxy_password' in kwargs: self.proxy_password = kwargs[u'proxy_password'] - else: - self.proxy_password = None def do_import(self): """ diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index 737822016..d2c281877 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -34,10 +34,10 @@ from openlp.plugins.bibles.lib import parse_reference from openlp.plugins.bibles.lib.db import BibleDB, BibleMeta from csvbible import CSVBible +from http import HTTPBible from olp1 import OpenLP1Bible from opensong import OpenSongBible from osis import OSISBible -from http import HTTPBible log = logging.getLogger(__name__) diff --git a/openlp/plugins/bibles/lib/olp1.py b/openlp/plugins/bibles/lib/olp1.py index 4655289a6..6e453c3b3 100755 --- a/openlp/plugins/bibles/lib/olp1.py +++ b/openlp/plugins/bibles/lib/olp1.py @@ -27,8 +27,9 @@ import logging import sqlite -#from openlp.core.lib import Receiver, translate -from openlp.core.lib import translate +from PyQt4 import QtCore + +from openlp.core.lib import Receiver, translate from db import BibleDB log = logging.getLogger(__name__) @@ -41,22 +42,19 @@ class OpenLP1Bible(BibleDB): """ Constructor. """ - log.debug(__name__) + log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - if 'filename' not in kwargs: - raise KeyError(u'You have to supply a file name to import from.') - self.filename = kwargs['filename'] -# QtCore.QObject.connect(Receiver.get_receiver(), -# QtCore.SIGNAL(u'bibles_stop_import'), self.stop_import) + self.filename = kwargs[u'filename'] + self.name = kwargs[u'name'] + QtCore.QObject.connect(Receiver.get_receiver(), + QtCore.SIGNAL(u'bibles_stop_import'), self.stop_import) def do_import(self): """ Imports an openlp.org v1 bible. """ - # TODO: stop_import_flag connection = None cursor = None - self.wizard.incrementProgressBar(u'Preparing for import...') try: connection = sqlite.connect(self.filename) cursor = connection.cursor() @@ -66,18 +64,23 @@ class OpenLP1Bible(BibleDB): cursor.execute(u'SELECT id, testament_id, name, abbreviation FROM book') books = cursor.fetchall() for book in books: + if self.stop_import_flag: + return False book_id = int(book[0]) testament_id = int(book[1]) name = unicode(book[2], u'cp1252') abbreviation = unicode(book[3], u'cp1252') - self.wizard.incrementProgressBar(unicode('%s %s' % (translate( - 'BiblesPlugin.olp1', 'Importing'), name))) self.create_book(name, abbreviation, testament_id) + # Update the progess bar. + self.wizard.incrementProgressBar(u'%s %s...' % (translate( + 'BiblesPlugin.OpenLP1Import', 'Importing'), name)) # Import the verses for this book. cursor.execute(u'SELECT chapter, verse, text || \'\' AS text FROM ' 'verse WHERE book_id=%s' % book_id) verses = cursor.fetchall() for verse in verses: + if self.stop_import_flag: + return False chapter = int(verse[0]) verse_number = int(verse[1]) text = unicode(verse[2], u'cp1252') diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index 8644a9f47..14454a69f 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -44,10 +44,8 @@ class OpenSongBible(BibleDB): Constructor to create and set up an instance of the OpenSongBible class. This class is used to import Bibles from OpenSong's XML format. """ - log.debug(__name__) + log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - if 'filename' not in kwargs: - raise KeyError(u'You have to supply a file name to import from.') self.filename = kwargs['filename'] QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'bibles_stop_import'), self.stop_import) @@ -59,7 +57,6 @@ class OpenSongBible(BibleDB): log.debug(u'Starting OpenSong import from "%s"' % self.filename) if not isinstance(self.filename, unicode): self.filename = unicode(self.filename, u'utf8') - self.wizard.incrementProgressBar(u'Preparing for import...') file = None success = True try: @@ -87,10 +84,9 @@ class OpenSongBible(BibleDB): unicode(verse.text) ) Receiver.send_message(u'openlp_process_events') - self.wizard.incrementProgressBar( - QtCore.QString('%s %s %s' % ( + self.wizard.incrementProgressBar(u'%s %s %s...' % ( translate('BiblesPlugin.Opensong', 'Importing'), - db_book.name, chapter.attrib[u'n']))) + db_book.name, chapter.attrib[u'n'])) self.session.commit() except IOError: log.exception(u'Loading bible from OpenSong file failed') @@ -99,7 +95,6 @@ class OpenSongBible(BibleDB): if file: file.close() if self.stop_import_flag: - self.wizard.incrementProgressBar(u'Import canceled!') return False else: return success diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index a0b6a1828..53a6f152c 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -33,7 +33,7 @@ import re from PyQt4 import QtCore -from openlp.core.lib import Receiver +from openlp.core.lib import Receiver, translate from openlp.core.utils import AppLocation from db import BibleDB @@ -50,11 +50,11 @@ class OSISBible(BibleDB): Constructor to create and set up an instance of the OpenSongBible class. This class is used to import Bibles from OpenSong's XML format. """ - log.debug(__name__) + log.debug(self.__class__.__name__) BibleDB.__init__(self, parent, **kwargs) - if u'filename' not in kwargs: - raise KeyError(u'You have to supply a file name to import from.') self.filename = kwargs[u'filename'] + fbibles = None + self.books = {} self.verse_regex = re.compile( r'(.*?)') self.note_regex = re.compile(r'(.*?)') @@ -72,11 +72,9 @@ class OSISBible(BibleDB): self.divineName_regex = re.compile( r'(.*?)') self.spaces_regex = re.compile(r'([ ]{2,})') - self.books = {} filepath = os.path.join( AppLocation.get_directory(AppLocation.PluginsDir), u'bibles', u'resources', u'osisbooks.csv') - fbibles = None try: fbibles = open(filepath, u'r') for line in fbibles: @@ -96,9 +94,15 @@ class OSISBible(BibleDB): Loads a Bible from file. """ log.debug(u'Starting OSIS import from "%s"' % self.filename) - self.wizard.incrementProgressBar( - u'Detecting encoding (this may take a few minutes)...') detect_file = None + db_book = None + osis = None + success = True + last_chapter = 0 + testament = 1 + match_count = 0 + self.wizard.incrementProgressBar(translate('BiblesPlugin.OsisImport', + 'Detecting encoding (this may take a few minutes)...')) try: detect_file = open(self.filename, u'r') details = chardet.detect(detect_file.read(1048576)) @@ -108,14 +112,8 @@ class OSISBible(BibleDB): finally: if detect_file: detect_file.close() - osis = None - success = True try: osis = codecs.open(self.filename, u'r', details['encoding']) - last_chapter = 0 - testament = 1 - match_count = 0 - db_book = None for file_record in osis: if self.stop_import_flag: break @@ -142,9 +140,9 @@ class OSISBible(BibleDB): if last_chapter != chapter: if last_chapter != 0: self.session.commit() - self.wizard.incrementProgressBar( - u'Importing %s %s...' % \ - (self.books[match.group(1)][0], chapter)) + self.wizard.incrementProgressBar(u'%s %s %s...' % ( + translate('BiblesPlugin.OsisImport', 'Importing'), + self.books[match.group(1)][0], chapter)) last_chapter = chapter # All of this rigmarol below is because the mod2osis # tool from the Sword library embeds XML in the OSIS @@ -171,7 +169,6 @@ class OSISBible(BibleDB): self.create_verse(db_book.id, chapter, verse, verse_text) Receiver.send_message(u'openlp_process_events') self.session.commit() - self.wizard.incrementProgressBar(u'Finishing import...') if match_count == 0: success = False except (ValueError, IOError): @@ -181,7 +178,6 @@ class OSISBible(BibleDB): if osis: osis.close() if self.stop_import_flag: - self.wizard.incrementProgressBar(u'Import canceled!') return False else: return success