← Back to team overview

openlp-core team mailing list archive

[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/63372

Change upgrade of bibles: bibleupgradeform now trys to upgrade existing verses from webbibles.
-- 
https://code.launchpad.net/~orangeshirt/openlp/bibles/+merge/63372
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-06-01 12:08:40 +0000
+++ openlp/plugins/bibles/forms/bibleupgradeform.py	2011-06-03 12:50:01 +0000
@@ -602,7 +602,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']))
@@ -633,7 +633,7 @@
                 else:
                     language_id = self.newbibles[number].get_language(name)
                 if not language_id:
-                    log.exception(u'Upgrading from "%s" failed' % filename[0])
+                    log.warn(u'Upgrading from "%s" failed' % filename[0])
                     delete_database(self.path, 
                         clean_filename(self.newbibles[number].get_name()))
                     del self.newbibles[number]
@@ -657,7 +657,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.warn(u'Upgrading books from %s - download '\
                             u'name: "%s" aborted by user' % (
                             meta_data[u'download source'], 
                             meta_data[u'download name']))
@@ -667,15 +667,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.warn(u'Upgrading books from "%s" failed' % name)
                     delete_database(self.path, 
                         clean_filename(self.newbibles[number].get_name()))
                     del self.newbibles[number]
@@ -701,7 +718,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.warn(u'Upgrading books from %s " '\
                             'failed - aborted by user' % name)
                         delete_database(self.path, 
                             clean_filename(self.newbibles[number].get_name()))
@@ -713,7 +730,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.warn(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-06-02 05:45:02 +0000
+++ openlp/plugins/bibles/lib/db.py	2011-06-03 12:50:01 +0000
@@ -1045,6 +1045,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