diff --git a/openlp/plugins/bibles/lib/db.py b/openlp/plugins/bibles/lib/db.py index 68edc55ef..6f2f2e2cb 100644 --- a/openlp/plugins/bibles/lib/db.py +++ b/openlp/plugins/bibles/lib/db.py @@ -357,6 +357,17 @@ class BibleDB(QtCore.QObject, Manager): """ return self.get_all_objects(Book, order_by_ref=Book.id) + def get_book_by_book_ref_id(self, id): + """ + Return a book object from the database. + + ``book`` + The name of the book to return. + """ + log.debug(u'BibleDb.get_book_by_book_ref_id("%s")', id) + db_book = self.get_object_filtered(Book, Book.book_reference_id.like(id)) + return db_book + def get_verses(self, reference_list, en_reference_list): """ This is probably the most used function. It retrieves the list of @@ -863,6 +874,26 @@ class SpellingDB(QtCore.QObject, Manager): return None else: return id[0] + + def get_book_name_by_reference_id(self, id, language): + """ + Return the name of a book by id and language. + + ``id`` + The name to search the id. + + ``language`` + The language for which should be searched + """ + log.debug(u'SpellingDB.get_book_name_by_reference_id("%s", "%s")', id, + language) + name = self.session.query(Spelling.name)\ + .filter(Spelling.book_reference_id.like(id))\ + .filter(Spelling.language_id.like(language)).first() + if not name: + return None + else: + return unicode(name[0]) def create_spelling(self, name, book_reference_id, language_id): """ diff --git a/openlp/plugins/bibles/lib/manager.py b/openlp/plugins/bibles/lib/manager.py index de66c38e0..44bb6dcd3 100644 --- a/openlp/plugins/bibles/lib/manager.py +++ b/openlp/plugins/bibles/lib/manager.py @@ -255,7 +255,7 @@ class BibleManager(object): book = self.get_book_ref(book, int(language_id.value)) return self.db_cache[bible].get_verse_count(book, chapter) - def get_verses(self, bible, versetext): + def get_verses(self, bible, versetext, secondbible=False): """ Parses a scripture reference, fetches the verses from the Bible specified, and returns a list of ``Verse`` objects. @@ -286,13 +286,29 @@ class BibleManager(object): return None reflist = parse_reference(versetext) if reflist: - log.debug(u'reflist:%s', reflist) + # if we use a second bible we have to rename the book names + if secondbible: + log.debug(u'BibleManager.get_verses("secondbible true")') + meta = self.db_cache[bible].get_object(BibleMeta, + u'language_id') + language_id = meta.value + new_reflist = [] + for item in reflist: + if item: + book = self.get_book_ref(item[0]) + book_ref_id = self.parent.manager.\ + get_book_ref_id_by_name(book, language_id) + book = self.db_cache[bible].get_book_by_book_ref_id( + book_ref_id) + new_reflist.append((book.name, item[1], item[2], item[3])) + reflist = new_reflist + log.debug(u'BibleManager.get_verses("reflist: %s")', reflist) en_reflist = [] for item in reflist: if item: book = self.get_book_ref(item[0]) en_reflist.append((book, item[1], item[2], item[3])) - log.debug(u'en_reflist:%s', en_reflist) + log.debug(u'BibleManager.get_verses("en_reflist: %s")', en_reflist) return self.db_cache[bible].get_verses(reflist, en_reflist) else: Receiver.send_message(u'openlp_information_message', { diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 1f1a7e2a0..d2753cfc5 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -482,7 +482,7 @@ class BibleMediaItem(MediaManagerItem): self.search_results = self.parent.manager.get_verses(bible, versetext) if second_bible: self.second_search_results = self.parent.manager.get_verses( - second_bible, versetext) + second_bible, versetext, True) if self.advancedClearComboBox.currentIndex() == 0: self.listView.clear() if self.listView.count() != 0: @@ -509,7 +509,7 @@ class BibleMediaItem(MediaManagerItem): self.search_results = self.parent.manager.get_verses(bible, text) if second_bible and self.search_results: self.second_search_results = self.parent.manager.get_verses( - second_bible, text) + second_bible, text, True) else: # We are doing a 'Text Search'. Receiver.send_message(u'cursor_busy')