From 42a8a4407e84b032b2e87673ca7d7f8e32e1bb73 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 27 May 2011 16:28:38 +0200 Subject: [PATCH] fixed bug 789143 Fixes: https://launchpad.net/bugs/789143 --- openlp/plugins/songs/lib/__init__.py | 46 ++-------------------------- 1 file changed, 2 insertions(+), 44 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 9e068e7f1..e3779f2c0 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -171,7 +171,8 @@ class VerseType(object): @staticmethod def from_loose_input(verse_name): """ - Return the VerseType for a given string, Other if not found + Return the VerseType for a given string, Other if not found. Use this + with caution! ``verse_name`` The string to return a VerseType for @@ -265,52 +266,9 @@ def clean_song(manager, song): whitespace = re.compile(r'\W+', re.UNICODE) song.search_title = (whitespace.sub(u' ', song.title).strip() + u'@' + whitespace.sub(u' ', song.alternate_title).strip()).strip().lower() - # Remove the old "language" attribute from lyrics tag (prior to 1.9.5). This - # is not very important, but this keeps the database clean. This can be - # removed when everybody has cleaned his songs. - song.lyrics = song.lyrics.replace(u'', u'') verses = SongXML().get_verses(song.lyrics) lyrics = u' '.join([whitespace.sub(u' ', verse[1]) for verse in verses]) song.search_lyrics = lyrics.lower() - # We need a new and clean SongXML instance. - sxml = SongXML() - # Rebuild the song's verses, to remove any wrong verse names (for example - # translated ones), which might have been added prior to 1.9.5. - # List for later comparison. - compare_order = [] - for verse in verses: - verse_type = VerseType.Tags[VerseType.from_loose_input( - verse[0][u'type'])] - sxml.add_verse_to_lyrics( - verse_type, - verse[0][u'label'], - verse[1], - verse[0][u'lang'] if verse[0].has_key(u'lang') else None - ) - compare_order.append((u'%s%s' % (verse_type, verse[0][u'label']) - ).upper()) - if verse[0][u'label'] == u'1': - compare_order.append(verse_type.upper()) - song.lyrics = unicode(sxml.extract_xml(), u'utf-8') - # Rebuild the verse order, to convert translated verse tags, which might - # have been added prior to 1.9.5. - if song.verse_order: - order = song.verse_order.strip().split() - else: - order = [] - new_order = [] - for verse_def in order: - verse_type = VerseType.Tags[VerseType.from_loose_input(verse_def[0])] - if len(verse_def) > 1: - new_order.append((u'%s%s' % (verse_type, verse_def[1:])).upper()) - else: - new_order.append(verse_type.upper()) - song.verse_order = u' '.join(new_order) - # Check if the verse order contains tags for verses which do not exist. - for order in new_order: - if order not in compare_order: - song.verse_order = u'' - break # The song does not have any author, add one. if not song.authors: name = SongStrings.AuthorUnknown