forked from openlp/openlp
Bug #875286
use VerseType.Other if it is not recogniced during OpenSong import.
This commit is contained in:
parent
71818eb0db
commit
b2067bef43
@ -278,7 +278,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
|||||||
if len(verse_tag) > 1:
|
if len(verse_tag) > 1:
|
||||||
index = VerseType.from_translated_string(verse_tag)
|
index = VerseType.from_translated_string(verse_tag)
|
||||||
if index is None:
|
if index is None:
|
||||||
index = VerseType.from_string(verse_tag)
|
index = VerseType.from_string(verse_tag, True)
|
||||||
else:
|
else:
|
||||||
verse_tags_translated = True
|
verse_tags_translated = True
|
||||||
if index is None:
|
if index is None:
|
||||||
|
@ -113,7 +113,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
verse_num = int(match.group(2))
|
verse_num = int(match.group(2))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
verse_num = 1
|
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:
|
if verse_type_index is not None:
|
||||||
self.verseNumberBox.setValue(verse_num)
|
self.verseNumberBox.setValue(verse_num)
|
||||||
|
|
||||||
@ -140,7 +140,7 @@ class EditVerseForm(QtGui.QDialog, Ui_EditVerseDialog):
|
|||||||
match = VERSE_REGEX.match(text)
|
match = VERSE_REGEX.match(text)
|
||||||
if match:
|
if match:
|
||||||
verse_type = match.group(1)
|
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:
|
try:
|
||||||
verse_number = int(match.group(2))
|
verse_number = int(match.group(2))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
@ -80,15 +80,12 @@ class VerseType(object):
|
|||||||
``strict``
|
``strict``
|
||||||
Determines if the default Other or None should be returned
|
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()
|
verse_tag = verse_tag[0].lower()
|
||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return VerseType.TranslatedTags[num].upper()
|
return VerseType.TranslatedTags[num].upper()
|
||||||
return not_found_value
|
if not strict:
|
||||||
|
return VerseType.TranslatedTags[VerseType.Other].upper()
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def translated_name(verse_tag, strict=False):
|
def translated_name(verse_tag, strict=False):
|
||||||
@ -101,15 +98,12 @@ class VerseType(object):
|
|||||||
``strict``
|
``strict``
|
||||||
Determines if the default Other or None should be returned
|
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()
|
verse_tag = verse_tag[0].lower()
|
||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return VerseType.TranslatedNames[num]
|
return VerseType.TranslatedNames[num]
|
||||||
return not_found_value
|
if not strict:
|
||||||
|
return VerseType.TranslatedNames[VerseType.Other]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_tag(verse_tag, strict=False):
|
def from_tag(verse_tag, strict=False):
|
||||||
@ -122,15 +116,12 @@ class VerseType(object):
|
|||||||
``strict``
|
``strict``
|
||||||
Determines if the default Other or None should be returned
|
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()
|
verse_tag = verse_tag[0].lower()
|
||||||
for num, tag in enumerate(VerseType.Tags):
|
for num, tag in enumerate(VerseType.Tags):
|
||||||
if verse_tag == tag:
|
if verse_tag == tag:
|
||||||
return num
|
return num
|
||||||
return no_return_value
|
if not strict:
|
||||||
|
return VerseType.Other
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_translated_tag(verse_tag):
|
def from_translated_tag(verse_tag):
|
||||||
@ -146,17 +137,22 @@ class VerseType(object):
|
|||||||
return num
|
return num
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_string(verse_name):
|
def from_string(verse_name, strict=False):
|
||||||
"""
|
"""
|
||||||
Return the VerseType for a given string
|
Return the VerseType for a given string
|
||||||
|
|
||||||
``verse_name``
|
``verse_name``
|
||||||
The string to return a VerseType for
|
The string to return a VerseType for
|
||||||
|
|
||||||
|
``strict``
|
||||||
|
Determines if the default Other or None should be returned
|
||||||
"""
|
"""
|
||||||
verse_name = verse_name.lower()
|
verse_name = verse_name.lower()
|
||||||
for num, name in enumerate(VerseType.Names):
|
for num, name in enumerate(VerseType.Names):
|
||||||
if verse_name == name.lower():
|
if verse_name == name.lower():
|
||||||
return num
|
return num
|
||||||
|
if not strict:
|
||||||
|
return VerseType.Other
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def from_translated_string(verse_name):
|
def from_translated_string(verse_name):
|
||||||
@ -172,23 +168,27 @@ class VerseType(object):
|
|||||||
return num
|
return num
|
||||||
|
|
||||||
@staticmethod
|
@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
|
Return the VerseType for a given string, Other if not found
|
||||||
|
|
||||||
``verse_name``
|
``verse_name``
|
||||||
The string to return a VerseType for
|
The string to return a VerseType for
|
||||||
|
|
||||||
|
``strict``
|
||||||
|
Determines if the default Other or None should be returned
|
||||||
"""
|
"""
|
||||||
verse_index = None
|
verse_index = None
|
||||||
if len(verse_name) > 1:
|
if len(verse_name) > 1:
|
||||||
verse_index = VerseType.from_translated_string(verse_name)
|
verse_index = VerseType.from_translated_string(verse_name)
|
||||||
if verse_index is None:
|
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:
|
elif len(verse_name) == 1:
|
||||||
|
verse_index = VerseType.from_translated_tag(verse_name)
|
||||||
if verse_index is None:
|
if verse_index is None:
|
||||||
verse_index = VerseType.from_translated_tag(verse_name)
|
verse_index = VerseType.from_tag(verse_name, strict)
|
||||||
if verse_index is None:
|
elif not strict:
|
||||||
verse_index = VerseType.from_tag(verse_name)
|
verse_index = VerseType.Other
|
||||||
return verse_index
|
return verse_index
|
||||||
|
|
||||||
def retrieve_windows_encoding(recommendation=None):
|
def retrieve_windows_encoding(recommendation=None):
|
||||||
|
@ -457,7 +457,7 @@ class SongMediaItem(MediaManagerItem):
|
|||||||
verse_index = \
|
verse_index = \
|
||||||
VerseType.from_translated_string(verse_tag)
|
VerseType.from_translated_string(verse_tag)
|
||||||
if verse_index is None:
|
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:
|
if verse_index is None:
|
||||||
verse_index = VerseType.from_tag(verse_tag)
|
verse_index = VerseType.from_tag(verse_tag)
|
||||||
verse_tag = VerseType.TranslatedTags[verse_index].upper()
|
verse_tag = VerseType.TranslatedTags[verse_index].upper()
|
||||||
|
Loading…
Reference in New Issue
Block a user