This commit is contained in:
Raoul Snyman 2011-02-25 23:55:43 +02:00
commit 81b84cc780
9 changed files with 26 additions and 23 deletions

View File

@ -753,4 +753,5 @@ class BibleImportForm(OpenLPWizard):
else:
self.progressLabel.setText(translate(
'BiblesPlugin.ImportWizardForm', 'Your Bible import failed.'))
del self.manager.db_cache[importer.name]
delete_database(self.plugin.settingsSection, importer.file)

View File

@ -94,8 +94,6 @@ class CSVBible(BibleDB):
self.testamentsfile = None
self.booksfile = kwargs[u'booksfile']
self.versesfile = kwargs[u'versefile']
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
def setup_testaments(self):
"""

View File

@ -33,7 +33,7 @@ from sqlalchemy import Column, ForeignKey, or_, Table, types
from sqlalchemy.orm import class_mapper, mapper, relation
from sqlalchemy.orm.exc import UnmappedClassError
from openlp.core.lib import translate
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
@ -162,6 +162,8 @@ class BibleDB(QtCore.QObject, Manager):
if u'file' in kwargs:
self.get_name()
self.wizard = None
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
def stop_import(self):
"""

View File

@ -236,8 +236,20 @@ class BGExtract(object):
while found_count < verse_count:
content = content.findNext(u'sup', u'versenum')
raw_verse_num = content.next
raw_verse_text = raw_verse_num.next
verse_list[int(str(raw_verse_num))] = unicode(raw_verse_text)
clean_verse_num = 0
# Not all verses exist in all translations and may or may not be
# represented by a verse number. If they are not fine, if they are
# it will probably be in a format that breaks int(). We will then
# have no idea what garbage may be sucked in to the verse text so
# if we do not get a clean int() then ignore the verse completely.
try:
clean_verse_num = int(str(raw_verse_num))
except ValueError:
log.exception(u'Illegal verse number in %s %s %s:%s',
version, bookname, chapter, unicode(raw_verse_num))
if clean_verse_num:
raw_verse_text = raw_verse_num.next
verse_list[clean_verse_num] = unicode(raw_verse_text)
found_count += 1
return SearchResults(bookname, chapter, verse_list)

View File

@ -46,8 +46,6 @@ class OpenLP1Bible(BibleDB):
log.debug(self.__class__.__name__)
BibleDB.__init__(self, parent, **kwargs)
self.filename = kwargs[u'filename']
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
def do_import(self):
"""

View File

@ -46,8 +46,6 @@ class OpenSongBible(BibleDB):
log.debug(self.__class__.__name__)
BibleDB.__init__(self, parent, **kwargs)
self.filename = kwargs['filename']
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
def do_import(self):
"""

View File

@ -41,15 +41,11 @@ log = logging.getLogger(__name__)
class OSISBible(BibleDB):
"""
OSIS Bible format importer class.
`OSIS <http://www.bibletechnologies.net/>`_ Bible format importer class.
"""
log.info(u'BibleOSISImpl loaded')
def __init__(self, parent, **kwargs):
"""
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(self.__class__.__name__)
BibleDB.__init__(self, parent, **kwargs)
self.filename = kwargs[u'filename']
@ -86,8 +82,6 @@ class OSISBible(BibleDB):
finally:
if fbibles:
fbibles.close()
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'openlp_stop_wizard'), self.stop_import)
def do_import(self):
"""

View File

@ -94,11 +94,10 @@ import os
from lxml import etree, objectify
from openlp.core.ui.wizard import WizardStrings
from openlp.plugins.songs.lib import VerseType
from openlp.plugins.songs.lib import add_author_unknown, VerseType
from openlp.plugins.songs.lib.songimport import SongImport
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic
from openlp.plugins.songs.lib.xml import SongXML
from openlp.plugins.songs.lib.ui import SongStrings
log = logging.getLogger(__name__)
@ -293,13 +292,13 @@ class FoilPresenter(object):
if copyright.find(u'Rechte') != -1:
temp = copyright.partition(u'Rechte')
copyright = temp[0]
markers = [u'Text +u\.?n?d? +Melodie[a-zA-Z0-9\,\. ]*:',
markers = [u'Text +u\.?n?d? +Melodie[\w\,\. ]*:',
u'Text +u\.?n?d? +Musik', u'T & M', u'Melodie und Satz',
u'Text[a-zA-Z0-9\,\. ]*:', u'Melodie', u'Musik', u'Satz',
u'Text[\w\,\. ]*:', u'Melodie', u'Musik', u'Satz',
u'Weise', u'[dD]eutsch', u'[dD]t[\.\:]', u'Englisch',
u'[oO]riginal', u'Bearbeitung', u'[R|r]efrain']
for marker in markers:
copyright = re.compile(marker).sub(u'<marker>', copyright)
copyright = re.compile(marker).sub(u'<marker>', copyright, re.U)
copyright = re.compile(u'(?<=<marker>) *:').sub(u'', copyright)
i = 0
x = 0
@ -338,8 +337,6 @@ class FoilPresenter(object):
authors.append(tempx)
elif (len(author) > 2):
authors.append(author)
if not authors:
authors.append(SongStrings.AuthorUnknown)
for display_name in authors:
author = self.manager.get_object_filtered(Author,
Author.display_name == display_name)
@ -350,6 +347,8 @@ class FoilPresenter(object):
first_name = u' '.join(display_name.split(u' ')[:-1]))
self.manager.save_object(author)
song.authors.append(author)
if not song.authors:
add_author_unknown(self.manager, song)
def _process_cclinumber(self, foilpresenterfolie, song):
"""

View File

@ -381,6 +381,7 @@ class OpenLyrics(object):
author = Author.populate(display_name=display_name,
last_name=display_name.split(u' ')[-1],
first_name=u' '.join(display_name.split(u' ')[:-1]))
song.authors.append(author)
if not song.authors:
add_author_unknown(self.manager, song)