openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #09727
[Merge] lp:~orangeshirt/openlp/bibles into lp:openlp
Armin Köhler has proposed merging lp:~orangeshirt/openlp/bibles into lp:openlp.
Requested reviews:
Raoul Snyman (raoul-snyman)
For more details, see:
https://code.launchpad.net/~orangeshirt/openlp/bibles/+merge/63224
Change upgrade of bibles: bibleupgradeform now trys to upgrade existing verses from webbibles.
--
https://code.launchpad.net/~orangeshirt/openlp/bibles/+merge/63224
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/plugins/bibles/forms/bibleupgradeform.py'
--- openlp/plugins/bibles/forms/bibleupgradeform.py 2011-05-28 21:01:27 +0000
+++ openlp/plugins/bibles/forms/bibleupgradeform.py 2011-06-02 12:01:29 +0000
@@ -606,7 +606,7 @@
handler = BSExtract(proxy_server)
books = handler.get_books_from_http(meta_data[u'download name'])
if not books:
- log.exception(u'Upgrading books from %s - download '\
+ log.error(u'Upgrading books from %s - download '\
u'name: "%s" failed' % (
meta_data[u'download source'],
meta_data[u'download name']))
@@ -637,7 +637,7 @@
else:
language_id = self.newbibles[number].get_language(name)
if not language_id:
- log.exception(u'Upgrading from "%s" failed' % filename[0])
+ log.error(u'Upgrading from "%s" failed' % filename[0])
delete_database(self.path,
clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number]
@@ -661,7 +661,7 @@
book_ref_id = self.newbibles[number].\
get_book_ref_id_by_name(book, len(books), language_id)
if not book_ref_id:
- log.exception(u'Upgrading books from %s - download '\
+ log.error(u'Upgrading books from %s - download '\
u'name: "%s" aborted by user' % (
meta_data[u'download source'],
meta_data[u'download name']))
@@ -671,15 +671,32 @@
bible_failed = True
break
book_details = BiblesResourcesDB.get_book_by_id(book_ref_id)
- self.newbibles[number].create_book(book, book_ref_id,
- book_details[u'testament_id'])
+ db_book = self.newbibles[number].create_book(book,
+ book_ref_id, book_details[u'testament_id'])
+ # Try to import still downloaded verses
+ oldbook = oldbible.get_book(book)
+ if oldbook:
+ verses = oldbible.get_verses(oldbook[u'id'])
+ if not verses:
+ log.warn(u'No verses found to import for book '
+ u'"%s"', book)
+ continue
+ for verse in verses:
+ if self.stop_import_flag:
+ bible_failed = True
+ break
+ self.newbibles[number].create_verse(db_book.id,
+ int(verse[u'chapter']),
+ int(verse[u'verse']), unicode(verse[u'text']))
+ Receiver.send_message(u'openlp_process_events')
+ self.newbibles[number].session.commit()
else:
language_id = self.newbibles[number].get_object(BibleMeta,
u'language_id')
if not language_id:
language_id = self.newbibles[number].get_language(name)
if not language_id:
- log.exception(u'Upgrading books from "%s" failed' % name)
+ log.error(u'Upgrading books from "%s" failed' % name)
delete_database(self.path,
clean_filename(self.newbibles[number].get_name()))
del self.newbibles[number]
@@ -705,7 +722,7 @@
get_book_ref_id_by_name(book[u'name'], len(books),
language_id)
if not book_ref_id:
- log.exception(u'Upgrading books from %s " '\
+ log.error(u'Upgrading books from %s " '\
'failed - aborted by user' % name)
delete_database(self.path,
clean_filename(self.newbibles[number].get_name()))
@@ -717,7 +734,7 @@
book_ref_id, book_details[u'testament_id'])
verses = oldbible.get_verses(book[u'id'])
if not verses:
- log.exception(u'No verses found to import for book '
+ log.error(u'No verses found to import for book '
u'"%s"', book[u'name'])
self.newbibles[number].delete_book(db_book)
continue
=== modified file 'openlp/plugins/bibles/lib/db.py'
--- openlp/plugins/bibles/lib/db.py 2011-05-27 09:23:46 +0000
+++ openlp/plugins/bibles/lib/db.py 2011-06-02 12:01:29 +0000
@@ -1043,6 +1043,28 @@
else:
return None
+ def get_book(self, name):
+ """
+ Return a book by name or abbreviation.
+
+ ``name``
+ The name or abbreviation of the book.
+ """
+ if not isinstance(name, unicode):
+ name = unicode(name)
+ books = self.run_sql(u'SELECT id, testament_id, name, '
+ u'abbreviation FROM book WHERE LOWER(name) = ? OR '
+ u'LOWER(abbreviation) = ?', (name.lower(), name.lower()))
+ if books:
+ return {
+ u'id': books[0][0],
+ u'testament_id': books[0][1],
+ u'name': unicode(books[0][2]),
+ u'abbreviation': unicode(books[0][3])
+ }
+ else:
+ return None
+
def get_books(self):
"""
Returns the books of the Bible.
Follow ups