← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/bitsandbobs into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/bitsandbobs into lp:openlp.

    Requested reviews:
    OpenLP Core (openlp-core)


Added Web bibles to Advanced tab.
Fixed error handing in bibles for incomplete loaded bibles
Add Error handling to version_check code
-- 
https://code.launchpad.net/~trb143/openlp/bitsandbobs/+merge/13359
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py	2009-10-10 18:36:58 +0000
+++ openlp/core/lib/mediamanageritem.py	2009-10-14 17:15:24 +0000
@@ -206,63 +206,72 @@
         if self.hasFileIcon:
             self.addToolbarButton(
                 translate(
-                    self.TranslationContext, u'Load ' + self.PluginTextShort),
+                    self.TranslationContext, u'Load %s' % self.PluginTextShort),
                 translate(
                     self.TranslationContext,
-                    u'Load a new ' + self.PluginTextShort),
-                u':' + self.IconPath + u'_load.png', self.onFileClick,
-                self.PluginTextShort + u'FileItem')
+                    u'Load a new %s' % self.PluginTextShort),
+                u':%s_load.png' % self.IconPath,
+                self.onFileClick,
+                u'%sFileItem' %self.PluginTextShort)
         ## New Button ##
         if self.hasNewIcon:
             self.addToolbarButton(
                 translate(
-                    self.TranslationContext, u'New ' + self.PluginTextShort),
+                    self.TranslationContext, u'New %s' % self.PluginTextShort),
                 translate(
                     self.TranslationContext,
-                    u'Add a new ' + self.PluginTextShort),
-                u':' + self.IconPath + u'_new.png', self.onNewClick,
-                self.PluginTextShort + u'NewItem')
+                    u'Add a new %s' % self.PluginTextShort),
+                u':%s_new.png' % self.IconPath,
+                self.onNewClick,
+                u'%sNewItem' % self.PluginTextShort)
         ## Edit Button ##
         if self.hasEditIcon:
             self.addToolbarButton(
                 translate(
-                    self.TranslationContext, u'Edit ' + self.PluginTextShort),
+                    self.TranslationContext, u'Edit %s' % self.PluginTextShort),
                 translate(
                     self.TranslationContext,
-                    u'Edit the selected ' + self.PluginTextShort),
-                u':' + self.IconPath + u'_edit.png', self.onEditClick,
-                self.PluginTextShort + u'EditItem')
+                    u'Edit the selected %s' % self.PluginTextShort),
+                u':%s_edit.png' % self.IconPath,
+                self.onEditClick,
+                u'%sEditItem' %  self.PluginTextShort)
         ## Delete Button ##
         if self.hasDeleteIcon:
             self.addToolbarButton(
                 translate(
-                    self.TranslationContext, u'Delete ' + self.PluginTextShort),
+                    self.TranslationContext, u'Delete %s ' % self.PluginTextShort),
                 translate(self.TranslationContext, u'Delete the selected item'),
-                u':' + self.IconPath + u'_delete.png', self.onDeleteClick,
-                self.PluginTextShort + u'DeleteItem')
+                u':%s_delete.png' % self.IconPath,
+                self.onDeleteClick,
+                u'%sDeleteItem' % self.PluginTextShort)
         ## Separator Line ##
         self.addToolbarSeparator()
         ## Preview ##
         self.addToolbarButton(
             translate(
-                self.TranslationContext, u'Preview ' + self.PluginTextShort),
+                self.TranslationContext, u'Preview %s' % self.PluginTextShort),
             translate(self.TranslationContext, u'Preview the selected item'),
-            u':/system/system_preview.png', self.onPreviewClick, u'PreviewItem')
+            u':/system/system_preview.png',
+            self.onPreviewClick,
+            u'PreviewItem')
         ## Live  Button ##
         self.addToolbarButton(
             translate(self.TranslationContext, u'Go Live'),
             translate(self.TranslationContext, u'Send the selected item live'),
-            u':/system/system_live.png', self.onLiveClick, u'LiveItem')
+            u':/system/system_live.png',
+            self.onLiveClick,
+            u'LiveItem')
         ## Add to service Button ##
         self.addToolbarButton(
             translate(
                 self.TranslationContext,
-                u'Add ' + self.PluginTextShort + u' To Service'),
+                u'Add %s to Service' % self.PluginTextShort),
             translate(
                 self.TranslationContext,
                 u'Add the selected item(s) to the service'),
-            u':/system/system_add.png', self.onAddClick,
-            self.PluginTextShort + u'AddItem')
+            u':/system/system_add.png',
+            self.onAddClick,
+            u'%sAddServiceItem' % self.PluginTextShort)
 
     def addListViewToToolBar(self):
         #Add the List widget

=== modified file 'openlp/core/utils/__init__.py'
--- openlp/core/utils/__init__.py	2009-10-12 04:43:02 +0000
+++ openlp/core/utils/__init__.py	2009-10-14 17:15:24 +0000
@@ -28,6 +28,8 @@
 from registry import Registry
 from confighelper import ConfigHelper
 
+log = logging.getLogger(__name__)
+
 __all__ = ['Registry', 'ConfigHelper']
 
 def check_latest_version(config, current_version):
@@ -38,7 +40,7 @@
     if lastTest != thisTest:
         version_string = u''
         req = urllib2.Request(u'http://www.openlp.org/files/version.txt')
-        req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
+        req.add_header(u'User-Agent', u'OpenLP Version Checker')
         try:
             handle = urllib2.urlopen(req, None, 1)
             html = handle.read()

=== modified file 'openlp/plugins/bibles/lib/bibleDBimpl.py'
--- openlp/plugins/bibles/lib/bibleDBimpl.py	2009-09-25 23:06:54 +0000
+++ openlp/plugins/bibles/lib/bibleDBimpl.py	2009-10-14 17:15:24 +0000
@@ -127,13 +127,19 @@
         verse = self.session.query(Verse).join(Book).filter(
             Book.name == bookname).filter(
             Verse.chapter == chapter).order_by(Verse.verse.desc()).first()
-        return verse.verse
+        if verse == None:
+            return 0
+        else:
+            return verse.verse
 
     def get_max_bible_book_chapter(self, bookname):
         log.debug(u'get_max_bible_book_chapter %s', bookname)
         verse = self.session.query(Verse).join(Book).filter(
             Book.name == bookname).order_by(Verse.chapter.desc()).first()
-        return verse.chapter
+        if verse == None:
+            return 0
+        else:
+            return verse.chapter
 
     def get_bible_book(self, bookname):
         log.debug(u'get_bible_book %s', bookname)

=== modified file 'openlp/plugins/bibles/lib/common.py'
--- openlp/plugins/bibles/lib/common.py	2009-09-28 20:45:04 +0000
+++ openlp/plugins/bibles/lib/common.py	2009-10-14 17:15:24 +0000
@@ -104,7 +104,8 @@
             urllib2.install_opener(opener)
         xml_string = u''
         req = urllib2.Request(urlstring)
-        req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
+        #May us look like an IE Browser on XP to stop blocking by web site
+        req.add_header(u'User-Agent', u'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)')
         try:
             handle = urllib2.urlopen(req)
             html = handle.read()

=== modified file 'openlp/plugins/bibles/lib/manager.py'
--- openlp/plugins/bibles/lib/manager.py	2009-09-27 12:56:14 +0000
+++ openlp/plugins/bibles/lib/manager.py	2009-10-14 17:15:24 +0000
@@ -25,6 +25,8 @@
 import logging
 import os
 
+from openlp.core.lib import translate
+
 from bibleOSISimpl import BibleOSISImpl
 from bibleCSVimpl import BibleCSVImpl
 from bibleDBimpl import BibleDBImpl
@@ -55,6 +57,7 @@
         """
         self.config = config
         log.debug(u'Bible Initialising')
+        self.web = translate(u'BibleManager', u'Web')
         # dict of bible database objects
         self.bible_db_cache = None
         # dict of bible http readers
@@ -83,6 +86,8 @@
         self.bible_http_cache = {}
         # books of the bible with testaments
         self.book_testaments = {}
+        # books of the bible with chapter count
+        self.book_chapters = []
         # books of the bible with abbreviation
         self.book_abbreviations = {}
         self.web_bibles_present = False
@@ -126,6 +131,7 @@
                     p = line.split(u',')
                     self.book_abbreviations[p[0]] = p[1].replace(u'\n', '')
                     self.book_testaments[p[0]] = p[2].replace(u'\n', '')
+                    self.book_chapters.append({u'book':p[0], u'total':p[3].replace(u'\n', '')})
         log.debug(u'Bible Initialised')
 
     def process_dialog(self, dialogobject):
@@ -247,33 +253,34 @@
         ``BibleMode.Full`` this method returns all the Bibles for the
         Advanced Search, and when the mode is ``BibleMode.Partial``
         this method returns all the bibles for the Quick Search.
-
-c
         """
         log.debug(u'get_bibles')
         bible_list = []
         for bible_name, bible_object in self.bible_db_cache.iteritems():
-            if mode == BibleMode.Full:
-                bible_list.append(bible_name)
-            else:
-                if self.bible_http_cache[bible_name] is None:
-                    # we do not have an http bible
-                    bible_list.append(bible_name)
+            if self.bible_http_cache[bible_name] is not None:
+                bible_name = u'%s (%s)' % (bible_name, self.web)
+            bible_list.append(bible_name)
         return bible_list
 
-    def get_bible_books(self,bible):
-        """
-        Returns a list of the books of the bible from the database
-        """
-        log.debug(u'get_bible_books %s', bible)
-        return self.bible_db_cache[bible].get_bible_books()
-
-    def get_book_chapter_count(self, bible, book):
+    def is_bible_web(self, bible):
+        pos_end = bible.find(u' (%s)' % self.web)
+        if pos_end != -1:
+            return True, bible[:pos_end]
+        return False, bible
+
+    def get_bible_books(self):
+        """
+        Returns a list of the books of the bible
+        """
+        log.debug(u'get_bible_books')
+        return self.book_chapters
+
+    def get_book_chapter_count(self, book):
         """
         Returns the number of Chapters for a given book
         """
-        log.debug(u'get_book_chapter_count %s, %s', bible, book)
-        return self.bible_db_cache[bible].get_max_bible_book_chapter(book)
+        log.debug(u'get_book_chapter_count %s', book)
+        return self.book_chapters[book]
 
     def get_book_verse_count(self, bible, book, chapter):
         """
@@ -281,8 +288,18 @@
         book and chapterMaxBibleBookVerses
         """
         log.debug(u'get_book_verse_count %s,%s,%s', bible, book, chapter)
-        return self.bible_db_cache[bible].get_max_bible_book_verses(
-            book, chapter)
+        web, bible = self.is_bible_web(bible)
+        if web:
+            count = self.bible_db_cache[bible].get_max_bible_book_verses(
+                    book, chapter)
+            if count == 0:
+                text = self.get_verse_text(bible, book, chapter, chapter, 1, 1)
+                count = self.bible_db_cache[bible].get_max_bible_book_verses(
+                    book, chapter)
+            return count
+        else:
+            return self.bible_db_cache[bible].get_max_bible_book_verses(
+                book, chapter)
 
     def get_verse_from_text(self, bible, versetext):
         """
@@ -290,6 +307,7 @@
         book and chapterMaxBibleBookVerses
         """
         log.debug(u'get_verses_from_text %s,%s', bible, versetext)
+        web, bible = self.is_bible_web(bible)
         return self.bible_db_cache[bible].get_verses_from_text(versetext)
 
     def save_meta_data(self, bible, version, copyright, permissions):
@@ -307,6 +325,7 @@
         Returns the meta data for a given key
         """
         log.debug(u'get_meta %s,%s', bible, key)
+        web, bible = self.is_bible_web(bible)
         return self.bible_db_cache[bible].get_meta(key)
 
     def get_verse_text(self, bible, bookname, schapter, echapter, sverse,
@@ -327,6 +346,7 @@
             bible, bookname, schapter, echapter, sverse, everse)
         # check to see if book/chapter exists fow HTTP bibles and load cache
         # if necessary
+        web, bible = self.is_bible_web(bible)
         if self.bible_http_cache[bible] is not None:
             book = self.bible_db_cache[bible].get_bible_book(bookname)
             if book is None:

=== modified file 'openlp/plugins/bibles/lib/mediaitem.py'
--- openlp/plugins/bibles/lib/mediaitem.py	2009-10-10 04:56:25 +0000
+++ openlp/plugins/bibles/lib/mediaitem.py	2009-10-14 17:15:24 +0000
@@ -54,7 +54,8 @@
         self.ServiceItemIconName = u':/media/bible_image.png'
         self.servicePath = None
         MediaManagerItem.__init__(self, parent, icon, title)
-        self.search_results = {} # place to store the search results
+        # place to store the search results
+        self.search_results = {}
         QtCore.QObject.connect(Receiver().get_receiver(),
             QtCore.SIGNAL(u'openlpreloadbibles'), self.reloadBibles)
 
@@ -180,6 +181,9 @@
         self.AdvancedSecondBibleComboBox = QtGui.QComboBox(self.AdvancedTab)
         self.AdvancedSecondBibleComboBox.setObjectName(u'SecondBible')
         self.AdvancedVerticalLayout.addWidget(self.AdvancedSecondBibleComboBox)
+        self.AdvancedMessage = QtGui.QLabel(self.QuickTab)
+        self.AdvancedMessage.setObjectName(u'AdvancedMessage')
+        self.AdvancedVerticalLayout.addWidget(self.AdvancedMessage)
         self.SearchTabWidget.addTab(self.AdvancedTab, u'Advanced')
         # Add the search tab widget to the page layout
         self.PageLayout.addWidget(self.SearchTabWidget)
@@ -242,6 +246,7 @@
 
     def setQuickMessage(self, text):
         self.QuickMessage.setText(translate(u'BibleMediaItem', unicode(text)))
+        self.AdvancedMessage.setText(translate(u'BibleMediaItem', unicode(text)))
         Receiver().send_message(u'process_events')
         #minor delay to get the events processed
         time.sleep(0.1)
@@ -276,9 +281,11 @@
             unicode(self.AdvancedVersionComboBox.currentText()))
 
     def onAdvancedBookComboBox(self):
+        item = int(self.AdvancedBookComboBox.currentIndex())
         self.initialiseChapterVerse(
             unicode(self.AdvancedVersionComboBox.currentText()),
-            unicode(self.AdvancedBookComboBox.currentText()))
+            unicode(self.AdvancedBookComboBox.currentText()),
+            self.AdvancedBookComboBox.itemData(item).toInt()[0])
 
     def onNewClick(self):
         self.bibleimportform = BibleImportForm(
@@ -291,14 +298,14 @@
         self.adjustComboBox(frm, self.verses, self.AdvancedToVerse)
 
     def onAdvancedToChapter(self):
-        text1 = self.AdvancedFromChapter.currentText()
-        text2 = self.AdvancedToChapter.currentText()
+        text1 = unicode(self.AdvancedFromChapter.currentText())
+        text2 = unicode(self.AdvancedToChapter.currentText())
         if text1 != text2:
             bible = unicode(self.AdvancedVersionComboBox.currentText())
             book = unicode(self.AdvancedBookComboBox.currentText())
             # get the verse count for new chapter
             verses = self.parent.biblemanager.get_book_verse_count(
-                bible, book, int(text2))[0]
+                bible, book, int(text2))
             self.adjustComboBox(1, verses, self.AdvancedToVerse)
 
     def onAdvancedSearchButton(self):
@@ -318,11 +325,10 @@
     def onAdvancedFromChapter(self):
         bible = unicode(self.AdvancedVersionComboBox.currentText())
         book = unicode(self.AdvancedBookComboBox.currentText())
-        cf = self.AdvancedFromChapter.currentText()
+        cf = int(self.AdvancedFromChapter.currentText())
         self.adjustComboBox(cf, self.chapters_from, self.AdvancedToChapter)
         # get the verse count for new chapter
-        vse = self.parent.biblemanager.get_book_verse_count(bible, book,
-            int(cf))[0]
+        vse = self.parent.biblemanager.get_book_verse_count(bible, book, cf)
         self.adjustComboBox(1, vse, self.AdvancedFromVerse)
         self.adjustComboBox(1, vse, self.AdvancedToVerse)
 
@@ -432,30 +438,38 @@
 
     def initialiseBible(self, bible):
         log.debug(u'initialiseBible %s', bible)
-        books = self.parent.biblemanager.get_bible_books(unicode(bible))
+        book_data = self.parent.biblemanager.get_bible_books()
         self.AdvancedBookComboBox.clear()
         first = True
-        for book in books:
-            self.AdvancedBookComboBox.addItem(book.name)
+        for book in book_data:
+            row = self.AdvancedBookComboBox.count()
+            self.AdvancedBookComboBox.addItem(book[u'book'])
+            self.AdvancedBookComboBox.setItemData(row, QtCore.QVariant(book[u'total']))
             if first:
                 first = False
-                self.initialiseChapterVerse(bible, book.name)
+                self.initialiseChapterVerse(bible, book[u'book'], book[u'total'])
 
-    def initialiseChapterVerse(self, bible, book):
+    def initialiseChapterVerse(self, bible, book, chapters):
         log.debug(u'initialiseChapterVerse %s, %s', bible, book)
-        self.chapters_from = self.parent.biblemanager.get_book_chapter_count(
-            bible, book)
+        self.chapters_from = chapters
         self.verses = self.parent.biblemanager.get_book_verse_count(bible,
             book, 1)
-        self.adjustComboBox(1, self.chapters_from, self.AdvancedFromChapter)
-        self.adjustComboBox(1, self.chapters_from, self.AdvancedToChapter)
-        self.adjustComboBox(1, self.verses, self.AdvancedFromVerse)
-        self.adjustComboBox(1, self.verses, self.AdvancedToVerse)
+        if self.verses == 0:
+            self.AdvancedSearchButton.setEnabled(False)
+            self.AdvancedMessage.setText(
+                translate(u'BibleMediaItem', u'Bible not fully loaded'))
+        else:
+            self.AdvancedSearchButton.setEnabled(True)
+            self.AdvancedMessage.setText(u'')
+            self.adjustComboBox(1, self.chapters_from, self.AdvancedFromChapter)
+            self.adjustComboBox(1, self.chapters_from, self.AdvancedToChapter)
+            self.adjustComboBox(1, self.verses, self.AdvancedFromVerse)
+            self.adjustComboBox(1, self.verses, self.AdvancedToVerse)
 
-    def adjustComboBox(self, frm, to, combo):
-        log.debug(u'adjustComboBox %s, %s, %s', combo, frm, to)
+    def adjustComboBox(self, range_from, range_to, combo):
+        log.debug(u'adjustComboBox %s, %s, %s', combo, range_from, range_to)
         combo.clear()
-        for i in range(int(frm), int(to) + 1):
+        for i in range(int(range_from), int(range_to) + 1):
             combo.addItem(unicode(i))
 
     def displayResults(self, bible):

=== modified file 'openlp/plugins/bibles/resources/httpbooks.csv'
--- openlp/plugins/bibles/resources/httpbooks.csv	2009-02-15 19:11:27 +0000
+++ openlp/plugins/bibles/resources/httpbooks.csv	2009-10-14 17:15:24 +0000
@@ -1,66 +1,66 @@
-Genesis,ge,1
-Exodus,ex,1
-Leviticus,le,1
-Numbers,nu,1
-Deuteronomy,de,1
-Joshua,jos,1
-Judges,jud,1
-Ruth,ru,1
-1 Samual,1sa,1
-2 Samual,2sa,1
-1 Kings,1ki,1
-2 Kings,2ki,1
-1 Chronicles,1ch,1
-2 Chronicles,2ch,1
-Ezra,ezr,1
-Nehemiah,ne,1
-Esther,es,1
-Job,job,1
-Psalms,ps,1
-Proverbs,pr,1
-Ecclesiastes,ec,1
-Song of Songs,so,1
-Isaiah,isa,1
-Jeremiah,jer,1
-Lamentations,la,1
-Ezekiel,exe,1
-Daniel,da,1
-Hosea,ho,1
-Joel,joe,1
-Amos,am,1
-Obad,ob,1
-Jonah,Jonah,1
-Micah,mic,1
-Naham,na,1
-Habakkuk,hab,1
-Zephaniah,zep,1
-Haggai,hag,1
-Zechariah,zec,1
-Malachi,mal,1
-Matthew,mt,2
-Mark,mk,2
-Luke,lu,2
-John,joh,2
-Acts,ac,2
-Romans,ro,2
-1 Corinthans,1co,2
-2 Corinthans,2co,2
-Galatians,ga,2
-Ephesians,eph,2
-Philippians,php,2
-Colossians,col,2
-1 Thessalonians,1th,2
-2 Thessalonians,2th,2
-1 Timothy,1ti,2
-2 Timothy,2ti,2
-Titus,tit,2
-Philemon,phm,2
-Hebrews,heb,2
-James,jas,2
-1 Peter,1pe,2
-2 Peter,2pe,2
-1 John,1jo,2
-2 John,2jo,2
-3 John,3jo,2
-Jude,jude,2
-Revelation,re,2
+Genesis,Gen,1,50
+Exodus,Exod,1,40
+Leviticus,Lev,1,27
+Numbers,Num,1,36
+Deuteronomy,Deut,1,34
+Joshua,Josh,1,24
+Judges,Judg,1,21
+Ruth,Ruth,1,4
+1 Samual,1Sam,1,31
+2 Samual,2Sam,1,24
+1 Kings,1Kgs,1,22
+2 Kings,2Kgs,1,25
+1 Chronicles,1Chr,1,29
+2 Chronicles,2Chr,1,36
+Ezra,Esra,1,10
+Nehemiah,Neh,1,13
+Esther,Esth,1,10
+Job,Job,1,42
+Psalms,Ps,1,150
+Proverbs,Prov,1,31
+Ecclesiastes,Eccl,1,12
+Song of Songs,Song,1,8
+Isaiah,Isa,1,66
+Jeremiah,Jer,1,5
+Lamentations,Lam,1,5
+Ezekiel,Ezek,1,48
+Daniel,Dan,1,12
+Hosea,Hos,1,14
+Joel,Joel,1,3
+Amos,Amos,1,9
+Obad,Obad,1,1
+Jonah,Jonah,1,4
+Micah,Mic,1,7
+Naham,Nah,1,3
+Habakkuk,Hab,1,3
+Zephaniah,Zeph,1,3
+Haggai,Hag,1,2
+Zechariah,Zech,1,3
+Malachi,Mal,1,4
+Matthew,Matt,2,28
+Mark,Mark,2,16
+Luke,Luke,2,24
+John,John,2,21
+Acts,Acts,2,28
+Romans,Rom,2,16
+1 Corinthans,1Cor,2,16
+2 Corinthans,2Cor,2,13
+Galatians,Gal,2,6
+Ephesians,Eph,2,6
+Philippians,Phil,2,4
+Colossians,Col,2,4
+1 Thessalonians,1Thess,2,5
+2 Thessalonians,2Thess,2,3
+1 Timothy,1Tim,2,6
+2 Timothy,2Tim,2,4
+Titus,Titus,2,3
+Philemon,Phlm,2,1
+Hebrews,Heb,2,13
+James,Jas,2,5
+1 Peter,1Pet,2,5
+2 Peter,2Pet,2,3
+1 John,1John,2,5
+2 John,2John,2,1
+3 John,3John,2,1
+Jude,Jude,2,1
+Revelation,Rev,2,22


Follow ups