forked from openlp/openlp
Inform user when openlyric errors occur
bzr-revno: 1896
This commit is contained in:
commit
4129887f93
@ -38,6 +38,7 @@ from openlp.core.ui.wizard import WizardStrings
|
|||||||
from openlp.plugins.songs.lib.songimport import SongImport
|
from openlp.plugins.songs.lib.songimport import SongImport
|
||||||
from openlp.plugins.songs.lib.ui import SongStrings
|
from openlp.plugins.songs.lib.ui import SongStrings
|
||||||
from openlp.plugins.songs.lib import OpenLyrics
|
from openlp.plugins.songs.lib import OpenLyrics
|
||||||
|
from openlp.plugins.songs.lib.xml import OpenLyricsError
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -73,3 +74,7 @@ class OpenLyricsImport(SongImport):
|
|||||||
except etree.XMLSyntaxError:
|
except etree.XMLSyntaxError:
|
||||||
log.exception(u'XML syntax error in file %s' % file_path)
|
log.exception(u'XML syntax error in file %s' % file_path)
|
||||||
self.logError(file_path, SongStrings.XMLSyntaxError)
|
self.logError(file_path, SongStrings.XMLSyntaxError)
|
||||||
|
except OpenLyricsError as exception:
|
||||||
|
log.exception(u'OpenLyricsException %d in file %s: %s'
|
||||||
|
% (exception.type, file_path, exception.log_message))
|
||||||
|
self.logError(file_path, exception.display_message)
|
||||||
|
@ -66,7 +66,7 @@ import re
|
|||||||
|
|
||||||
from lxml import etree, objectify
|
from lxml import etree, objectify
|
||||||
|
|
||||||
from openlp.core.lib import FormattingTags
|
from openlp.core.lib import FormattingTags, translate
|
||||||
from openlp.plugins.songs.lib import clean_song, VerseType
|
from openlp.plugins.songs.lib import clean_song, VerseType
|
||||||
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic
|
from openlp.plugins.songs.lib.db import Author, Book, Song, Topic
|
||||||
from openlp.core.utils import get_application_version
|
from openlp.core.utils import get_application_version
|
||||||
@ -673,9 +673,22 @@ class OpenLyrics(object):
|
|||||||
sxml = SongXML()
|
sxml = SongXML()
|
||||||
verses = {}
|
verses = {}
|
||||||
verse_def_list = []
|
verse_def_list = []
|
||||||
|
try:
|
||||||
lyrics = song_xml.lyrics
|
lyrics = song_xml.lyrics
|
||||||
|
except AttributeError:
|
||||||
|
raise OpenLyricsError(OpenLyricsError.LyricsError,
|
||||||
|
'<lyrics> tag is missing.',
|
||||||
|
unicode(translate('OpenLP.OpenLyricsImportError',
|
||||||
|
'<lyrics> tag is missing.')))
|
||||||
|
try:
|
||||||
|
verses = lyrics.verse
|
||||||
|
except AttributeError:
|
||||||
|
raise OpenLyricsError(OpenLyricsError.VerseError,
|
||||||
|
'<verse> tag is missing.',
|
||||||
|
unicode(translate('OpenLP.OpenLyricsImportError',
|
||||||
|
'<verse> tag is missing.')))
|
||||||
# Loop over the "verse" elements.
|
# Loop over the "verse" elements.
|
||||||
for verse in lyrics.verse:
|
for verse in verses:
|
||||||
text = u''
|
text = u''
|
||||||
# Loop over the "lines" elements.
|
# Loop over the "lines" elements.
|
||||||
for lines in verse.lines:
|
for lines in verse.lines:
|
||||||
@ -791,3 +804,15 @@ class OpenLyrics(object):
|
|||||||
"""
|
"""
|
||||||
return etree.tostring(xml, encoding=u'UTF-8',
|
return etree.tostring(xml, encoding=u'UTF-8',
|
||||||
xml_declaration=True, pretty_print=True)
|
xml_declaration=True, pretty_print=True)
|
||||||
|
|
||||||
|
|
||||||
|
class OpenLyricsError(Exception):
|
||||||
|
# XML tree is missing the lyrics tag
|
||||||
|
LyricsError = 1
|
||||||
|
# XML tree has no verse tags
|
||||||
|
VerseError = 2
|
||||||
|
|
||||||
|
def __init__(self, type, log_message, display_message):
|
||||||
|
self.type = type
|
||||||
|
self.log_message = log_message
|
||||||
|
self.display_message = display_message
|
||||||
|
Loading…
Reference in New Issue
Block a user