From b2067bef43cf427849c0b4e8f5ea7a01c876caa6 Mon Sep 17 00:00:00 2001 From: M2j Date: Fri, 18 Nov 2011 11:53:56 +0100 Subject: [PATCH 1/3] Bug #875286 use VerseType.Other if it is not recogniced during OpenSong import. --- openlp/plugins/songs/forms/editsongform.py | 2 +- openlp/plugins/songs/forms/editverseform.py | 4 +- openlp/plugins/songs/lib/__init__.py | 42 ++++++++++----------- openlp/plugins/songs/lib/mediaitem.py | 2 +- 4 files changed, 25 insertions(+), 25 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 1c254406c..5ca90bfbb 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -278,7 +278,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): if len(verse_tag) > 1: index = VerseType.from_translated_string(verse_tag) if index is None: - index = VerseType.from_string(verse_tag) + index = VerseType.from_string(verse_tag, True) else: verse_tags_translated = True if index is None: diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 1845bc0e3..1d37dd433 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -113,7 +113,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): verse_num = int(match.group(2)) except ValueError: verse_num = 1 - verse_type_index = VerseType.from_loose_input(verse_tag) + verse_type_index = VerseType.from_loose_input(verse_tag, True) if verse_type_index is not None: self.verseNumberBox.setValue(verse_num) @@ -140,7 +140,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): match = VERSE_REGEX.match(text) if match: verse_type = match.group(1) - verse_type_index = VerseType.from_loose_input(verse_type) + verse_type_index = VerseType.from_loose_input(verse_type, True) try: verse_number = int(match.group(2)) except ValueError: diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 1b0ca316e..05086ec86 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -80,15 +80,12 @@ class VerseType(object): ``strict`` Determines if the default Other or None should be returned """ - if strict: - not_found_value = None - else: - not_found_value = VerseType.TranslatedTags[VerseType.Other].upper() verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.Tags): if verse_tag == tag: return VerseType.TranslatedTags[num].upper() - return not_found_value + if not strict: + return VerseType.TranslatedTags[VerseType.Other].upper() @staticmethod def translated_name(verse_tag, strict=False): @@ -101,15 +98,12 @@ class VerseType(object): ``strict`` Determines if the default Other or None should be returned """ - if strict: - not_found_value = None - else: - not_found_value = VerseType.TranslatedNames[VerseType.Other] verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.Tags): if verse_tag == tag: return VerseType.TranslatedNames[num] - return not_found_value + if not strict: + return VerseType.TranslatedNames[VerseType.Other] @staticmethod def from_tag(verse_tag, strict=False): @@ -122,15 +116,12 @@ class VerseType(object): ``strict`` Determines if the default Other or None should be returned """ - if strict: - no_return_value = None - else: - no_return_value = VerseType.Other verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.Tags): if verse_tag == tag: return num - return no_return_value + if not strict: + return VerseType.Other @staticmethod def from_translated_tag(verse_tag): @@ -146,17 +137,22 @@ class VerseType(object): return num @staticmethod - def from_string(verse_name): + def from_string(verse_name, strict=False): """ Return the VerseType for a given string ``verse_name`` The string to return a VerseType for + + ``strict`` + Determines if the default Other or None should be returned """ verse_name = verse_name.lower() for num, name in enumerate(VerseType.Names): if verse_name == name.lower(): return num + if not strict: + return VerseType.Other @staticmethod def from_translated_string(verse_name): @@ -172,23 +168,27 @@ class VerseType(object): return num @staticmethod - def from_loose_input(verse_name): + def from_loose_input(verse_name, strict=False): """ Return the VerseType for a given string, Other if not found ``verse_name`` The string to return a VerseType for + + ``strict`` + Determines if the default Other or None should be returned """ verse_index = None if len(verse_name) > 1: verse_index = VerseType.from_translated_string(verse_name) if verse_index is None: - verse_index = VerseType.from_string(verse_name) + verse_index = VerseType.from_string(verse_name, strict) elif len(verse_name) == 1: + verse_index = VerseType.from_translated_tag(verse_name) if verse_index is None: - verse_index = VerseType.from_translated_tag(verse_name) - if verse_index is None: - verse_index = VerseType.from_tag(verse_name) + verse_index = VerseType.from_tag(verse_name, strict) + elif not strict: + verse_index = VerseType.Other return verse_index def retrieve_windows_encoding(recommendation=None): diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 29f5d6a18..295b39cf5 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -457,7 +457,7 @@ class SongMediaItem(MediaManagerItem): verse_index = \ VerseType.from_translated_string(verse_tag) if verse_index is None: - verse_index = VerseType.from_string(verse_tag) + verse_index = VerseType.from_string(verse_tag, True) if verse_index is None: verse_index = VerseType.from_tag(verse_tag) verse_tag = VerseType.TranslatedTags[verse_index].upper() From 286ec88fc49b3bc6646fa50adba1aa1f78e2081d Mon Sep 17 00:00:00 2001 From: M2j Date: Thu, 24 Nov 2011 23:34:27 +0100 Subject: [PATCH 2/3] make VerseType.Other default for VerseType encodings --- openlp/plugins/songs/forms/editsongform.py | 11 ++-- openlp/plugins/songs/forms/editverseform.py | 6 +- openlp/plugins/songs/lib/__init__.py | 61 +++++++++++---------- openlp/plugins/songs/lib/mediaitem.py | 4 +- 4 files changed, 40 insertions(+), 42 deletions(-) diff --git a/openlp/plugins/songs/forms/editsongform.py b/openlp/plugins/songs/forms/editsongform.py index 5ca90bfbb..f34beb850 100644 --- a/openlp/plugins/songs/forms/editsongform.py +++ b/openlp/plugins/songs/forms/editsongform.py @@ -278,13 +278,11 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): if len(verse_tag) > 1: index = VerseType.from_translated_string(verse_tag) if index is None: - index = VerseType.from_string(verse_tag, True) + index = VerseType.from_string(verse_tag, None) else: verse_tags_translated = True if index is None: index = VerseType.from_tag(verse_tag) - if index is None: - index = VerseType.Other verse[0][u'type'] = VerseType.Tags[index] if verse[0][u'label'] == u'': verse[0][u'label'] = u'1' @@ -308,7 +306,8 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): for verse_def in self.song.verse_order.split(): verse_index = None if verse_tags_translated: - verse_index = VerseType.from_translated_tag(verse_def[0]) + verse_index = VerseType.from_translated_tag(verse_def[0], + None) if verse_index is None: verse_index = VerseType.from_tag(verse_def[0]) verse_tag = VerseType.TranslatedTags[verse_index].upper() @@ -606,14 +605,14 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog): order_names = unicode(self.verseOrderEdit.text()).split() for item in order_names: if len(item) == 1: - verse_index = VerseType.from_translated_tag(item) + verse_index = VerseType.from_translated_tag(item, None) if verse_index is not None: order.append(VerseType.Tags[verse_index] + u'1') else: # it matches no verses anyway order.append(u'') else: - verse_index = VerseType.from_translated_tag(item[0]) + verse_index = VerseType.from_translated_tag(item[0], None) if verse_index is None: # it matches no verses anyway order.append(u'') diff --git a/openlp/plugins/songs/forms/editverseform.py b/openlp/plugins/songs/forms/editverseform.py index 1d37dd433..0a9505a44 100644 --- a/openlp/plugins/songs/forms/editverseform.py +++ b/openlp/plugins/songs/forms/editverseform.py @@ -113,7 +113,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): verse_num = int(match.group(2)) except ValueError: verse_num = 1 - verse_type_index = VerseType.from_loose_input(verse_tag, True) + verse_type_index = VerseType.from_loose_input(verse_tag, None) if verse_type_index is not None: self.verseNumberBox.setValue(verse_num) @@ -140,7 +140,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): match = VERSE_REGEX.match(text) if match: verse_type = match.group(1) - verse_type_index = VerseType.from_loose_input(verse_type, True) + verse_type_index = VerseType.from_loose_input(verse_type, None) try: verse_number = int(match.group(2)) except ValueError: @@ -153,7 +153,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog): tag=u'%s1' % VerseType.Tags[VerseType.Verse]): self.hasSingleVerse = single if single: - verse_type_index = VerseType.from_tag(tag[0]) + verse_type_index = VerseType.from_tag(tag[0], None) verse_number = tag[1:] if verse_type_index is not None: self.verseTypeComboBox.setCurrentIndex(verse_type_index) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 05086ec86..9003669d0 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -69,7 +69,7 @@ class VerseType(object): TranslatedTags = [name[0].lower() for name in TranslatedNames] @staticmethod - def translated_tag(verse_tag, strict=False): + def translated_tag(verse_tag, default=Other): """ Return the translated UPPERCASE tag for a given tag, used to show translated verse tags in UI @@ -77,82 +77,84 @@ class VerseType(object): ``verse_tag`` The string to return a VerseType for - ``strict`` - Determines if the default Other or None should be returned + ``default`` + Default return value if no matching tag is found """ verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.Tags): if verse_tag == tag: return VerseType.TranslatedTags[num].upper() - if not strict: - return VerseType.TranslatedTags[VerseType.Other].upper() + if default in VerseType.TranslatedTags: + return VerseType.TranslatedTags[default].upper() @staticmethod - def translated_name(verse_tag, strict=False): + def translated_name(verse_tag, default=Other): """ Return the translated name for a given tag ``verse_tag`` The string to return a VerseType for - ``strict`` - Determines if the default Other or None should be returned + ``default`` + Default return value if no matching tag is found """ verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.Tags): if verse_tag == tag: return VerseType.TranslatedNames[num] - if not strict: - return VerseType.TranslatedNames[VerseType.Other] + if default in VerseType.TranslatedNames: + return VerseType.TranslatedNames[default] @staticmethod - def from_tag(verse_tag, strict=False): + def from_tag(verse_tag, default=Other): """ Return the VerseType for a given tag ``verse_tag`` The string to return a VerseType for - ``strict`` - Determines if the default Other or None should be returned + ``default`` + Default return value if no matching tag is found """ verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.Tags): if verse_tag == tag: return num - if not strict: - return VerseType.Other + return default @staticmethod - def from_translated_tag(verse_tag): + def from_translated_tag(verse_tag, default=Other): """ Return the VerseType for a given tag ``verse_tag`` The string to return a VerseType for + + ``default`` + Default return value if no matching tag is found """ verse_tag = verse_tag[0].lower() for num, tag in enumerate(VerseType.TranslatedTags): if verse_tag == tag: return num + return default @staticmethod - def from_string(verse_name, strict=False): + def from_string(verse_name, default=Other): """ Return the VerseType for a given string ``verse_name`` The string to return a VerseType for - ``strict`` - Determines if the default Other or None should be returned + ``default`` + Default return value if no matching tag is found """ verse_name = verse_name.lower() for num, name in enumerate(VerseType.Names): if verse_name == name.lower(): return num - if not strict: - return VerseType.Other + return default @staticmethod def from_translated_string(verse_name): @@ -168,27 +170,26 @@ class VerseType(object): return num @staticmethod - def from_loose_input(verse_name, strict=False): + def from_loose_input(verse_name, default=Other): """ Return the VerseType for a given string, Other if not found ``verse_name`` The string to return a VerseType for - ``strict`` - Determines if the default Other or None should be returned + ``default`` + Default return value if no matching tag is found """ - verse_index = None if len(verse_name) > 1: verse_index = VerseType.from_translated_string(verse_name) if verse_index is None: - verse_index = VerseType.from_string(verse_name, strict) + verse_index = VerseType.from_string(verse_name, default) elif len(verse_name) == 1: - verse_index = VerseType.from_translated_tag(verse_name) + verse_index = VerseType.from_translated_tag(verse_name, None) if verse_index is None: - verse_index = VerseType.from_tag(verse_name, strict) - elif not strict: - verse_index = VerseType.Other + verse_index = VerseType.from_tag(verse_name, default) + else: + return default return verse_index def retrieve_windows_encoding(recommendation=None): diff --git a/openlp/plugins/songs/lib/mediaitem.py b/openlp/plugins/songs/lib/mediaitem.py index 295b39cf5..dad95c61b 100644 --- a/openlp/plugins/songs/lib/mediaitem.py +++ b/openlp/plugins/songs/lib/mediaitem.py @@ -457,7 +457,7 @@ class SongMediaItem(MediaManagerItem): verse_index = \ VerseType.from_translated_string(verse_tag) if verse_index is None: - verse_index = VerseType.from_string(verse_tag, True) + verse_index = VerseType.from_string(verse_tag, None) if verse_index is None: verse_index = VerseType.from_tag(verse_tag) verse_tag = VerseType.TranslatedTags[verse_index].upper() @@ -479,8 +479,6 @@ class SongMediaItem(MediaManagerItem): else: verse_index = VerseType.from_tag( verse[0][u'type']) - if verse_index is None: - verse_index = VerseType.Other verse_tag = VerseType.TranslatedTags[verse_index] verse_def = u'%s%s' % (verse_tag, verse[0][u'label']) From ebcf7a5dd2d33c867953f96315b03101ef0afd65 Mon Sep 17 00:00:00 2001 From: M2j Date: Thu, 24 Nov 2011 23:49:21 +0100 Subject: [PATCH 3/3] corrected function comment --- openlp/plugins/songs/lib/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index 9003669d0..19397d4ac 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -172,7 +172,7 @@ class VerseType(object): @staticmethod def from_loose_input(verse_name, default=Other): """ - Return the VerseType for a given string, Other if not found + Return the VerseType for a given string ``verse_name`` The string to return a VerseType for