The opensong database file contained verses containing sub-elements such as <i> tags. lxml considders the text of an element up until the first sub element.

bzr-revno: 2001
This commit is contained in:
Philip Ridout 2012-06-19 15:04:38 +02:00 committed by Raoul Snyman
commit b39e23d224

View File

@ -46,6 +46,22 @@ class OpenSongBible(BibleDB):
BibleDB.__init__(self, parent, **kwargs)
self.filename = kwargs['filename']
def get_text(self, element):
"""
Recursively get all text in an objectify element and its child elements.
``element``
An objectify element to get the text from
"""
verse_text = u''
if element.text:
verse_text = element.text
for sub_element in element.iterchildren():
verse_text += self.get_text(sub_element)
if element.tail:
verse_text += element.tail
return verse_text
def do_import(self, bible_name=None):
"""
Loads a Bible from file.
@ -89,7 +105,7 @@ class OpenSongBible(BibleDB):
db_book.id,
int(chapter.attrib[u'n'].split()[-1]),
int(verse.attrib[u'n']),
unicode(verse.text))
unicode(self.get_text(verse)))
self.wizard.incrementProgressBar(unicode(translate(
'BiblesPlugin.Opensong', 'Importing %s %s...',
'Importing <book name> <chapter>...')) %