diff --git a/openlp/core/ui/exceptionform.py b/openlp/core/ui/exceptionform.py index 7ccf3fc4c..cc66f21d7 100644 --- a/openlp/core/ui/exceptionform.py +++ b/openlp/core/ui/exceptionform.py @@ -138,6 +138,6 @@ class ExceptionForm(QtGui.QDialog, Ui_ExceptionDialog): if re.search(r'[/\\]openlp[/\\]', line): source = re.sub(r'.*[/\\]openlp[/\\](.*)".*', r'\1', line) if u':' in line: - exception = line.split(u'\n')[-1].split(u':')[0] + exception = line.split(u'\n')[-1].split(u':')[0] subject = u'Bug report: %s in %s' % (exception, source) mailto(address=u'bugs@openlp.org', subject=subject, body=body % content) diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index dade3ad44..099cb1706 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -350,7 +350,7 @@ class HTTPBible(BibleDB): Run the import. This method overrides the parent class method. Returns ``True`` on success, ``False`` on failure. """ - self.wizard.ImportProgressBar.setMaximum(2) + self.wizard.importProgressBar.setMaximum(2) self.wizard.incrementProgressBar('Registering bible...') self.create_meta(u'download source', self.download_source) self.create_meta(u'download name', self.download_name) diff --git a/openlp/plugins/bibles/lib/osis.py b/openlp/plugins/bibles/lib/osis.py index 53a6f152c..f39a4ab0f 100644 --- a/openlp/plugins/bibles/lib/osis.py +++ b/openlp/plugins/bibles/lib/osis.py @@ -134,9 +134,9 @@ class OSISBible(BibleDB): testament) if last_chapter == 0: if book == u'Gen': - self.wizard.ImportProgressBar.setMaximum(1188) + self.wizard.importProgressBar.setMaximum(1188) else: - self.wizard.ImportProgressBar.setMaximum(260) + self.wizard.importProgressBar.setMaximum(260) if last_chapter != chapter: if last_chapter != 0: self.session.commit() diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index b7f4a3f0b..58488a6e9 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -108,6 +108,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): self.TopicsListView.setSortingEnabled(False) self.TopicsListView.setAlternatingRowColors(True) self.findVerseSplit = re.compile(u'---\[\]---\n', re.UNICODE) + self.whitespace = re.compile(r'\W+', re.UNICODE) def initialise(self): self.VerseEditButton.setEnabled(False) @@ -738,7 +739,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): verseId = unicode(item.data(QtCore.Qt.UserRole).toString()) bits = verseId.split(u':') sxml.add_verse_to_lyrics(bits[0], bits[1], unicode(item.text())) - text = text + re.sub(r'\W+', u' ', + text = text + whitespace.sub(u' ', unicode(self.VerseListWidget.item(i, 0).text())) + u' ' if (bits[1] > u'1') and (bits[0][0] not in multiple): multiple.append(bits[0][0]) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 3b6019e5f..88b9a8569 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -197,7 +197,7 @@ class CCLIFileImport(SongImport): verse_text = verse_lines[1] elif verse_lines[0].startswith(u'('): verse_type = u'O' - verse_text = verse_lines[1] + verse_text = verse_lines[1] if len(verse_text) > 0: self.add_verse(verse_text, verse_type) check_first_verse_line = False @@ -303,13 +303,13 @@ class CCLIFileImport(SongImport): verse_type = u'P' elif line.startswith(u'(BRIDGE'): verse_type = u'B' - # Handle all other misc types + # Handle all other misc types elif line.startswith(u'('): verse_type = u'O' else: - verse_text = verse_text + line + verse_text = verse_text + line check_first_verse_line = False - else: + else: # We have verse content or the start of the # last part. Add l so as to keep the CRLF verse_text = verse_text + line diff --git a/openlp/plugins/songs/lib/sofimport.py b/openlp/plugins/songs/lib/sofimport.py index b9cd428c0..320e5c88a 100644 --- a/openlp/plugins/songs/lib/sofimport.py +++ b/openlp/plugins/songs/lib/sofimport.py @@ -369,7 +369,7 @@ class SofImport(OooImport): if song_number == 50: return 8 if song_number == 70: - return 4 + return 4 if song_number == 75: return 8 if song_number == 79: @@ -529,7 +529,7 @@ class SofImport(OooImport): if song_number == 955: return 9 if song_number == 968: - return 8 + return 8 if song_number == 972: return 7 if song_number == 974: diff --git a/openlp/plugins/songs/lib/songimport.py b/openlp/plugins/songs/lib/songimport.py index ea36d55b5..f305b90c7 100644 --- a/openlp/plugins/songs/lib/songimport.py +++ b/openlp/plugins/songs/lib/songimport.py @@ -247,7 +247,7 @@ class SongImport(QtCore.QObject): """ Extracts alphanumeric words for searchable fields """ - return re.sub(r'\W+', u' ', text) + return re.sub(r'\W+', u' ', text, re.UNICODE) def finish(self): """ diff --git a/openlp/plugins/songs/lib/test/test_opensongimport.py b/openlp/plugins/songs/lib/test/test_opensongimport.py index b503c65c5..27c7cca48 100644 --- a/openlp/plugins/songs/lib/test/test_opensongimport.py +++ b/openlp/plugins/songs/lib/test/test_opensongimport.py @@ -56,11 +56,11 @@ def test(): assert o.title == u'Martins Test' assert o.alternate_title == u'' assert o.song_number == u'1' - assert [u'C1', u'Chorus 1'] in o.verses - assert [u'C2', u'Chorus 2'] in o.verses - assert not [u'C3', u'Chorus 3'] in o.verses - assert [u'B1', u'Bridge 1\nBridge 1 line 2'] in o.verses - assert [u'V1', u'v1 Line 1\nV1 Line 2'] in o.verses + assert [u'C1', u'Chorus 1'] in o.verses + assert [u'C2', u'Chorus 2'] in o.verses + assert not [u'C3', u'Chorus 3'] in o.verses + assert [u'B1', u'Bridge 1\nBridge 1 line 2'] in o.verses + assert [u'V1', u'v1 Line 1\nV1 Line 2'] in o.verses assert [u'V2', u'v2 Line 1\nV2 Line 2'] in o.verses assert [u'V3A', u'V3 Line 1\nV3 Line 2'] in o.verses assert [u'RAP1', u'Rap 1 Line 1\nRap 1 Line 2'] in o.verses @@ -80,11 +80,11 @@ def test(): assert o.title == u'Martins Test' assert o.alternate_title == u'' assert o.song_number == u'1' - assert [u'B1', u'Bridge 1\nBridge 1 line 2'] in o.verses - assert [u'C1', u'Chorus 1'] in o.verses - assert [u'C2', u'Chorus 2'] in o.verses - assert not [u'C3', u'Chorus 3'] in o.verses - assert [u'V1', u'v1 Line 1\nV1 Line 2'] in o.verses + assert [u'B1', u'Bridge 1\nBridge 1 line 2'] in o.verses + assert [u'C1', u'Chorus 1'] in o.verses + assert [u'C2', u'Chorus 2'] in o.verses + assert not [u'C3', u'Chorus 3'] in o.verses + assert [u'V1', u'v1 Line 1\nV1 Line 2'] in o.verses assert [u'V2', u'v2 Line 1\nV2 Line 2'] in o.verses print o.verse_order_list assert o.verse_order_list == [u'V1', u'C1', u'V2', u'C2', u'V3', u'B1', u'V1'] @@ -99,11 +99,11 @@ def test(): assert o.alternate_title == u'' assert o.song_number == u'2' print o.verses - assert [u'B1', u'Bridge 1\nBridge 1 line 2'] in o.verses - assert [u'C1', u'Chorus 1'] in o.verses - assert [u'C2', u'Chorus 2'] in o.verses - assert not [u'C3', u'Chorus 3'] in o.verses - assert [u'V1', u'v1 Line 1\nV1 Line 2'] in o.verses + assert [u'B1', u'Bridge 1\nBridge 1 line 2'] in o.verses + assert [u'C1', u'Chorus 1'] in o.verses + assert [u'C2', u'Chorus 2'] in o.verses + assert not [u'C3', u'Chorus 3'] in o.verses + assert [u'V1', u'v1 Line 1\nV1 Line 2'] in o.verses assert [u'V2', u'v2 Line 1\nV2 Line 2'] in o.verses print o.verse_order_list assert o.verse_order_list == [u'V1', u'V2', u'B1', u'C1', u'C2'] @@ -120,7 +120,7 @@ def test(): assert o.verse_order_list == [u'V1'] assert o.topics == [u'Worship: Declaration'] print o.verses[0] - assert [u'V1', u'Line 1\nLine 2'] in o.verses + assert [u'V1', u'Line 1\nLine 2'] in o.verses print "Tests passed" diff --git a/openlp/plugins/songs/songsplugin.py b/openlp/plugins/songs/songsplugin.py index 32336c507..b55b05988 100644 --- a/openlp/plugins/songs/songsplugin.py +++ b/openlp/plugins/songs/songsplugin.py @@ -31,7 +31,7 @@ from PyQt4 import QtCore, QtGui from openlp.core.lib import Plugin, StringContent, build_icon, translate from openlp.core.lib.db import Manager -from openlp.plugins.songs.lib import SongMediaItem, SongsTab +from openlp.plugins.songs.lib import SongMediaItem, SongsTab, SongXMLParser from openlp.plugins.songs.lib.db import init_schema, Song from openlp.plugins.songs.lib.importer import SongFormat @@ -150,9 +150,13 @@ class SongsPlugin(Plugin): song.title = u'' if song.alternate_title is None: song.alternate_title = u'' - song.search_title = self.whitespace.sub(u' ', \ - song.title.lower()) + u' ' + \ - self.whitespace.sub(u' ', song.alternate_title.lower()) + song.search_title = self.whitespace.sub(u' ', song.title.lower() + \ + u' ' + song.alternate_title.lower()) + lyrics = u'' + verses = SongXMLParser(song.lyrics).get_verses() + for verse in verses: + lyrics = lyrics + self.whitespace.sub(u' ', verse[1]) + u' ' + song.search_lyrics = lyrics.lower() progressDialog.setValue(counter) self.manager.save_objects(songs) counter += 1