From 53b729af9ed3bff41bf0532420ada2e19e0541db Mon Sep 17 00:00:00 2001 From: Philip Ridout Date: Sat, 3 Nov 2012 22:54:55 +0000 Subject: [PATCH] Fixed bug #1074727 "OpenSong Bibles cause OpenLP to crash due to missing attriburte" Counts the chapter and verse numbers and uses these when no number is in the attribute. --- openlp/plugins/bibles/lib/opensong.py | 35 ++++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/openlp/plugins/bibles/lib/opensong.py b/openlp/plugins/bibles/lib/opensong.py index a2d2a4933..feacc0d95 100644 --- a/openlp/plugins/bibles/lib/opensong.py +++ b/openlp/plugins/bibles/lib/opensong.py @@ -98,31 +98,42 @@ class OpenSongBible(BibleDB): book_details = BiblesResourcesDB.get_book_by_id(book_ref_id) db_book = self.create_book(unicode(book.attrib[u'n']), book_ref_id, book_details[u'testament_id']) + chapter_number = 0 for chapter in book.c: if self.stop_import_flag: break + number = chapter.attrib[u'n'] + if number: + chapter_number = int(number.split()[-1]) + else: + chapter_number += 1 + verse_number = 0 for verse in chapter.v: if self.stop_import_flag: break - verse_number = 0 - try: - verse_number = int(verse.attrib[u'n']) - except ValueError: - verse_parts = verse.attrib[u'n'].split(u'-') - if len(verse_parts) > 1: - verse_number = int(verse_parts[0]) - except TypeError: - log.warn(u'Illegal verse number: %s', - unicode(verse.attrib[u'n'])) + number = verse.attrib[u'n'] + if number: + try: + number = int(number) + except ValueError: + verse_parts = number.split(u'-') + if len(verse_parts) > 1: + number = int(verse_parts[0]) + except TypeError: + log.warn(u'Illegal verse number: %s', + unicode(verse.attrib[u'n'])) + verse_number = number + else: + verse_number += 1 self.create_verse( db_book.id, - int(chapter.attrib[u'n'].split()[-1]), + chapter_number, verse_number, unicode(self.get_text(verse))) self.wizard.incrementProgressBar(unicode(translate( 'BiblesPlugin.Opensong', 'Importing %s %s...', 'Importing ...')) % - (db_book.name, int(chapter.attrib[u'n'].split()[-1]))) + (db_book.name, chapter_number)) self.session.commit() Receiver.send_message(u'openlp_process_events') except etree.XMLSyntaxError as inst: