← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~erik-lundin/openlp/bug-1053654 into lp:openlp

 

Erik Lundin has proposed merging lp:~erik-lundin/openlp/bug-1053654 into lp:openlp.

Commit message:
Fixed bug #1053654 'Adding verses from multiple chapters fails'.

Requested reviews:
  OpenLP Core (openlp-core)
Related bugs:
  Bug #1053654 in OpenLP: "Adding verses from multiple chapters fails"
  https://bugs.launchpad.net/openlp/+bug/1053654

For more details, see:
https://code.launchpad.net/~erik-lundin/openlp/bug-1053654/+merge/125589
-- 
https://code.launchpad.net/~erik-lundin/openlp/bug-1053654/+merge/125589
Your team OpenLP Core is requested to review the proposed merge of lp:~erik-lundin/openlp/bug-1053654 into lp:openlp.
=== modified file 'openlp/plugins/bibles/lib/__init__.py'
--- openlp/plugins/bibles/lib/__init__.py	2012-06-22 14:14:53 +0000
+++ openlp/plugins/bibles/lib/__init__.py	2012-09-20 21:53:20 +0000
@@ -355,37 +355,8 @@
         log.debug(u'Matched reference %s' % reference)
         book = match.group(u'book')
         if not book_ref_id:
-            book_names = BibleStrings().BookNames
-            # escape reserved characters
-            book_escaped = book
-            for character in u'\\.^$*+?{}[]()':
-                book_escaped = book_escaped.replace(
-                    character, u'\\' + character)
-            regex_book = re.compile(u'\s*%s\s*' % u'\s*'.join(
-                book_escaped.split()), re.UNICODE | re.IGNORECASE)
-            if language_selection == LanguageSelection.Bible:
-                db_book = bible.get_book(book)
-                if db_book:
-                    book_ref_id = db_book.book_reference_id
-            elif language_selection == LanguageSelection.Application:
-                books = filter(lambda key:
-                    regex_book.match(unicode(book_names[key])), book_names.keys())
-                books = filter(None, map(BiblesResourcesDB.get_book, books))
-                for value in books:
-                    if bible.get_book_by_book_ref_id(value[u'id']):
-                        book_ref_id = value[u'id']
-                        break
-            elif language_selection == LanguageSelection.English:
-                books = BiblesResourcesDB.get_books_like(book)
-                if books:
-                    book_list = filter(
-                        lambda value: regex_book.match(value[u'name']), books)
-                    if not book_list:
-                        book_list = books
-                    for value in book_list:
-                        if bible.get_book_by_book_ref_id(value[u'id']):
-                            book_ref_id = value[u'id']
-                            break
+            book_ref_id = bible.get_book_ref_id_by_localised_name(
+                book, language_selection)
         elif not bible.get_book_by_book_ref_id(book_ref_id):
             book_ref_id = False
         ranges = match.group(u'ranges')

=== modified file 'openlp/plugins/bibles/lib/db.py'
--- openlp/plugins/bibles/lib/db.py	2012-06-22 14:14:53 +0000
+++ openlp/plugins/bibles/lib/db.py	2012-09-20 21:53:20 +0000
@@ -29,6 +29,7 @@
 import chardet
 import logging
 import os
+import re
 import sqlite3
 
 from PyQt4 import QtCore
@@ -352,6 +353,53 @@
                     book, book_id, language_id)
         return book_id
 
+    def get_book_ref_id_by_localised_name(self, book,
+        language_selection):
+        """
+        Return the id of a named book.
+
+        ``book``
+            The name of the book, according to the selected language.
+        
+        ``language_selection``
+            The language selection the user has chosen in the settings
+            section of the Bible.
+        """
+        log.debug(u'get_book_ref_id_by_localised_name("%s", "%s")',
+            book, language_selection)
+        from openlp.plugins.bibles.lib import LanguageSelection, \
+            BibleStrings
+        book_names = BibleStrings().BookNames
+        # escape reserved characters
+        book_escaped = book
+        for character in u'\\.^$*+?{}[]()':
+            book_escaped = book_escaped.replace(
+                character, u'\\' + character)
+        regex_book = re.compile(u'\s*%s\s*' % u'\s*'.join(
+            book_escaped.split()), re.UNICODE | re.IGNORECASE)
+        if language_selection == LanguageSelection.Bible:
+            db_book = self.get_book(book)
+            if db_book:
+                return db_book.book_reference_id
+        elif language_selection == LanguageSelection.Application:
+            books = filter(lambda key:
+                regex_book.match(unicode(book_names[key])), book_names.keys())
+            books = filter(None, map(BiblesResourcesDB.get_book, books))
+            for value in books:
+                if self.get_book_by_book_ref_id(value[u'id']):
+                    return value[u'id']
+        elif language_selection == LanguageSelection.English:
+            books = BiblesResourcesDB.get_books_like(book)
+            if books:
+                book_list = filter(
+                    lambda value: regex_book.match(value[u'name']), books)
+                if not book_list:
+                    book_list = books
+                for value in book_list:
+                    if self.get_book_by_book_ref_id(value[u'id']):
+                        return value[u'id']
+        return False
+
     def get_verses(self, reference_list, show_error=True):
         """
         This is probably the most used function. It retrieves the list of

=== modified file 'openlp/plugins/bibles/lib/manager.py'
--- openlp/plugins/bibles/lib/manager.py	2012-09-04 22:39:47 +0000
+++ openlp/plugins/bibles/lib/manager.py	2012-09-20 21:53:20 +0000
@@ -277,8 +277,10 @@
         """
         log.debug(u'BibleManager.get_verse_count("%s", "%s", %s)',
             bible, book, chapter)
-        db_book = self.db_cache[bible].get_book(book)
-        book_ref_id = db_book.book_reference_id
+        language_selection = self.get_language_selection(bible)
+        book_ref_id = self.db_cache[bible]. \
+            get_book_ref_id_by_localised_name(
+            book, language_selection)
         return self.db_cache[bible].get_verse_count(book_ref_id, chapter)
 
     def get_verse_count_by_book_ref_id(self, bible, book_ref_id, chapter):