From 17a5d2c0b8d2b5e509395055243b07e8e5b581b8 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 9 Jan 2011 19:08:37 +0000 Subject: [PATCH 01/12] Theme fix --- openlp/core/ui/thememanager.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 0703402fd..fee26edad 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -379,7 +379,8 @@ class ThemeManager(QtGui.QWidget): files = QtGui.QFileDialog.getOpenFileNames(self, translate('OpenLP.ThemeManager', 'Select Theme Import File'), SettingsManager.get_last_dir(self.settingsSection), - translate('OpenLP.ThemeManager', 'Theme (*.*)')) + translate('OpenLP.ThemeManager', 'Theme v1 (*.theme);;' + 'Theme v2 (*.otz);;All Files (*.*)')) log.info(u'New Themes %s', unicode(files)) if files: for file in files: From 35da3d2926a84bc613d0bdaf2587075895ed244a Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Sun, 9 Jan 2011 19:15:40 +0000 Subject: [PATCH 02/12] Fix indentation --- openlp/core/ui/themeform.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/themeform.py b/openlp/core/ui/themeform.py index 0155c6a4c..760e3b261 100644 --- a/openlp/core/ui/themeform.py +++ b/openlp/core/ui/themeform.py @@ -592,7 +592,7 @@ class ThemeForm(QtGui.QWizard, Ui_ThemeWizard): saveFrom = self.theme.background_filename if not self.edit_mode and \ not self.thememanager.checkIfThemeExists(self.theme.theme_name): - return + return self.accepted = True self.thememanager.saveTheme(self.theme, saveFrom, saveTo) return QtGui.QDialog.accept(self) From 5edde179a4a1f0e670e3ed8247d48c26197b6a7d Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 10 Jan 2011 01:46:47 +0000 Subject: [PATCH 03/12] Refactor web bibles --- openlp/core/lib/mailto/__init__.py | 4 +- openlp/core/utils/__init__.py | 32 ++++++- openlp/plugins/bibles/lib/http.py | 133 ++++++++++++----------------- 3 files changed, 88 insertions(+), 81 deletions(-) diff --git a/openlp/core/lib/mailto/__init__.py b/openlp/core/lib/mailto/__init__.py index f0e23f1b5..f05ebfdee 100644 --- a/openlp/core/lib/mailto/__init__.py +++ b/openlp/core/lib/mailto/__init__.py @@ -230,7 +230,7 @@ def open(filename): return _open(filename) -def _fix_addersses(**kwargs): +def _fix_addresses(**kwargs): for headername in (u'address', u'to', u'cc', u'bcc'): try: headervalue = kwargs[headername] @@ -260,7 +260,7 @@ def mailto_format(**kwargs): """ # @TODO: implement utf8 option - kwargs = _fix_addersses(**kwargs) + kwargs = _fix_addresses(**kwargs) parts = [] for headername in (u'to', u'cc', u'bcc', u'subject', u'body', u'attach'): if kwargs.has_key(headername): diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 54bd78ccc..4e1b4807b 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -282,8 +282,38 @@ def split_filename(path): else: return os.path.split(path) +def get_web_page(url, update_openlp=False): + """ + Attempts to download the webpage at url and returns that page or None. + + ``url`` + The URL to be downloaded. + + ``update_openlp`` + Tells OpenLP to update itself if the page is successfully downloaded. + Defaults to False. + """ + # TODO: Add proxy usage. Get proxy info from OpenLP settings, add to a + # proxy_handler, build into an opener and install the opener into urllib2. + # http://docs.python.org/library/urllib2.html + if not url: + return None + page = None + log.debug(u'Downloading URL = %s' % url) + try: + page = urllib2.urlopen(url) + log.debug(u'Downloaded URL = %s' % page.geturl()) + except urllib2.URLError: + log.exception(u'The web page could not be downloaded') + if not page: + return None + if update_openlp: + Receiver.send_message(u'openlp_process_events') + return page + from languagemanager import LanguageManager from actions import ActionList __all__ = [u'AppLocation', u'check_latest_version', u'add_actions', - u'get_filesystem_encoding', u'LanguageManager', u'ActionList'] + u'get_filesystem_encoding', u'LanguageManager', u'ActionList', + u'get_web_page'] diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index d9210a275..0d62b377c 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -23,20 +23,22 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +""" +The :mod:`http` module enables OpenLP to retrieve scripture from bible +websites. +""" import logging import os import re import sqlite3 import socket import urllib -import urllib2 from HTMLParser import HTMLParseError from BeautifulSoup import BeautifulSoup, NavigableString from openlp.core.lib import Receiver, translate -from openlp.core.utils import AppLocation +from openlp.core.utils import AppLocation, get_web_page from openlp.plugins.bibles.lib import SearchResults from openlp.plugins.bibles.lib.db import BibleDB, Book @@ -204,29 +206,11 @@ class BGExtract(object): url_params = urllib.urlencode( {u'search': u'%s %s' % (bookname, chapter), u'version': u'%s' % version}) - page = None - try: - page = urllib2.urlopen( - u'http://www.biblegateway.com/passage/?%s' % url_params) - log.debug(u'BibleGateway url = %s' % page.geturl()) - Receiver.send_message(u'openlp_process_events') - except urllib2.URLError: - log.exception(u'The web bible page could not be downloaded.') - send_error_message(u'download') - finally: - if not page: - return None cleaner = [(re.compile(' |
|\'\+\''), lambda match: '')] - soup = None - try: - soup = BeautifulSoup(page, markupMassage=cleaner) - except HTMLParseError: - log.exception(u'BeautifulSoup could not parse the bible page.') - Receiver.send_message(u'bibles_download_error') - send_error_message(u'parse') - finally: - if not soup: - return None + soup = get_soup_for_bible_ref( + u'http://www.biblegateway.com/passage/?%s' % url_params, cleaner) + if not soup: + return None Receiver.send_message(u'openlp_process_events') footnotes = soup.findAll(u'sup', u'footnote') if footnotes: @@ -280,35 +264,15 @@ class BSExtract(object): log.debug(u'get_bible_chapter %s,%s,%s', version, bookname, chapter) chapter_url = u'http://m.bibleserver.com/text/%s/%s%s' % \ (version, bookname, chapter) - - log.debug(u'URL: %s', chapter_url) - page = None - try: - page = urllib2.urlopen(chapter_url) - Receiver.send_message(u'openlp_process_events') - except urllib2.URLError: - log.exception(u'The web bible page could not be downloaded.') - send_error_message(u'download') - finally: - if not page: - return None - soup = None - try: - soup = BeautifulSoup(page) - except HTMLParseError: - log.exception(u'BeautifulSoup could not parse the bible page.') - send_error_message(u'parse') + soup = get_soup_for_bible_ref(chapter_url) + if not soup: return None Receiver.send_message(u'openlp_process_events') - content = None - try: - content = soup.find(u'div', u'content').find(u'div').findAll(u'div') - except: + content = soup.find(u'div', u'content').find(u'div').findAll(u'div') + if not content: log.exception(u'No verses found in the Bibleserver response.') send_error_message(u'parse') - finally: - if not content: - return None + return None verse_number = re.compile(r'v(\d{2})(\d{3})(\d{3}) verse') verses = {} for verse in content: @@ -344,21 +308,8 @@ class CWExtract(object): urlbookname = bookname.replace(u' ', u'-') chapter_url = u'http://www.biblestudytools.com/%s/%s/%s.html' % \ (version, urlbookname.lower(), chapter) - log.debug(u'URL: %s', chapter_url) - page = None - try: - page = urllib2.urlopen(chapter_url) - Receiver.send_message(u'openlp_process_events') - except urllib2.URLError: - log.exception(u'The web bible page could not be downloaded.') - send_error_message(u'download') - return None - soup = None - try: - soup = BeautifulSoup(page) - except HTMLParseError: - log.exception(u'BeautifulSoup could not parse the bible page.') - send_error_message(u'parse') + soup = get_soup_for_bible_ref(chapter_url) + if not soup: return None Receiver.send_message(u'openlp_process_events') htmlverses = soup.findAll(u'span', u'versetext') @@ -416,6 +367,8 @@ class HTTPBible(BibleDB): BibleDB.__init__(self, parent, **kwargs) self.download_source = kwargs[u'download_source'] self.download_name = kwargs[u'download_name'] + # TODO: Clean up proxy stuff. We probably want one global proxy per + # connection type (HTTP and HTTPS) at most. self.proxy_server = None self.proxy_username = None self.proxy_password = None @@ -471,7 +424,7 @@ class HTTPBible(BibleDB): book = reference[0] db_book = self.get_book(book) if not db_book: - book_details = self.lookup_book(book) + book_details = HTTPBooks.get_book(book) if not book_details: Receiver.send_message(u'openlp_error_message', { u'title': translate('BiblesPlugin', 'No Book Found'), @@ -511,12 +464,12 @@ class HTTPBible(BibleDB): log.debug(u'get_chapter %s, %s', book, chapter) log.debug(u'source = %s', self.download_source) if self.download_source.lower() == u'crosswalk': - ev = CWExtract(self.proxy_server) + handler = CWExtract(self.proxy_server) elif self.download_source.lower() == u'biblegateway': - ev = BGExtract(self.proxy_server) + handler = BGExtract(self.proxy_server) elif self.download_source.lower() == u'bibleserver': - ev = BSExtract(self.proxy_server) - return ev.get_bible_chapter(self.download_name, book, chapter) + handler = BSExtract(self.proxy_server) + return handler.get_bible_chapter(self.download_name, book, chapter) def get_books(self): """ @@ -525,12 +478,6 @@ class HTTPBible(BibleDB): return [Book.populate(name=book['name']) for book in HTTPBooks.get_books()] - def lookup_book(self, book): - """ - Look up the name of a book. - """ - return HTTPBooks.get_book(book) - def get_chapter_count(self, book): """ Return the number of chapters in a particular book. @@ -549,8 +496,38 @@ class HTTPBible(BibleDB): """ return HTTPBooks.get_verse_count(book, chapter) +def get_soup_for_bible_ref(reference_url, cleaner=None): + """ + Gets a webpage and returns a parsed and optionally cleaned soup or None. + + ``reference_url`` + The URL to obtain the soup from. + + ``cleaner`` + An optional regex to use during webpage parsing. + """ + if not reference_url: + return None + page = get_web_page(reference_url, True) + if not page: + send_error_message(u'download') + return None + soup = None + try: + if cleaner: + soup = BeautifulSoup(page, markupMassage=cleaner) + else: + soup = BeautifulSoup(page) + except HTMLParseError: + log.exception(u'BeautifulSoup could not parse the bible page.') + if not soup: + send_error_message(u'parse') + return None + Receiver.send_message(u'openlp_process_events') + return soup + def send_error_message(reason): - if reason == u'downoad': + if reason == u'download': Receiver.send_message(u'openlp_error_message', { u'title': translate('BiblePlugin.HTTPBible', 'Download Error'), u'message': translate('BiblePlugin.HTTPBible', 'There was a ' @@ -563,5 +540,5 @@ def send_error_message(reason): u'title': translate('BiblePlugin.HTTPBible', 'Parse Error'), u'message': translate('BiblePlugin.HTTPBible', 'There was a ' 'problem extracting your verse selection. If this error continues ' - 'continues to occur consider reporting a bug.') + 'to occur consider reporting a bug.') }) From 6a3be54f1df049cb56a7e75e44bc85f3258c083f Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 10 Jan 2011 16:07:27 +0100 Subject: [PATCH 04/12] removed quickMessage, added cursor_busy signal for text search --- openlp/plugins/bibles/lib/mediaitem.py | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 066563bec..c78597003 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -137,9 +137,6 @@ class BibleMediaItem(MediaManagerItem): self.quickSearchButton.setObjectName(u'quickSearchButton') self.quickSearchButtonLayout.addWidget(self.quickSearchButton) self.quickLayout.addRow(self.quickSearchButtonLayout) - self.quickMessage = QtGui.QLabel(self.quickTab) - self.quickMessage.setObjectName(u'quickMessage') - self.quickLayout.addRow(self.quickMessage) self.searchTabWidget.addTab(self.quickTab, translate('BiblesPlugin.MediaItem', 'Quick')) # Add the Advanced Search tab. @@ -231,9 +228,6 @@ class BibleMediaItem(MediaManagerItem): self.advancedSearchButtonLayout.addWidget(self.advancedSearchButton) self.advancedLayout.addLayout( self.advancedSearchButtonLayout, 7, 0, 1, 3) - self.advancedMessage = QtGui.QLabel(self.advancedTab) - self.advancedMessage.setObjectName(u'advancedMessage') - self.advancedLayout.addWidget(self.advancedMessage, 8, 0, 1, 3) self.searchTabWidget.addTab(self.advancedTab, translate('BiblesPlugin.MediaItem', 'Advanced')) # Add the search tab widget to the page layout. @@ -347,13 +341,6 @@ class BibleMediaItem(MediaManagerItem): self.configUpdated() log.debug(u'bible manager initialise complete') - def setQuickMessage(self, text): - self.quickMessage.setText(text) - self.advancedMessage.setText(text) - Receiver.send_message(u'openlp_process_events') - # Minor delay to get the events processed. - time.sleep(0.1) - def onListViewResize(self, width, height): listViewGeometry = self.listView.geometry() self.SearchProgress.setGeometry(listViewGeometry.x(), @@ -432,11 +419,13 @@ class BibleMediaItem(MediaManagerItem): verse_count = self.parent.manager.get_verse_count(bible, book, 1) if verse_count == 0: self.advancedSearchButton.setEnabled(False) - self.advancedMessage.setText( - translate('BiblesPlugin.MediaItem', 'Bible not fully loaded.')) + Receiver.send_message(u'openlp_error_message', { + u'title': translate('BiblePlugin.MediaItem', 'Error'), + u'message': translate('BiblePlugin.MediaItem', + 'Bible not fully loaded') + }) else: self.advancedSearchButton.setEnabled(True) - self.advancedMessage.setText(u'') self.adjustComboBox(1, self.chapter_count, self.advancedFromChapter) self.adjustComboBox(1, self.chapter_count, self.advancedToChapter) self.adjustComboBox(1, verse_count, self.advancedFromVerse) @@ -606,6 +595,7 @@ class BibleMediaItem(MediaManagerItem): second_bible, text) else: # We are doing a 'Text Search'. + Receiver.send_message(u'cursor_busy') bibles = self.parent.manager.get_bibles() self.search_results = self.parent.manager.verse_search(bible, second_bible, text) @@ -636,6 +626,7 @@ class BibleMediaItem(MediaManagerItem): elif self.search_results: self.displayResults(bible, second_bible) self.quickSearchButton.setEnabled(True) + Receiver.send_message(u'cursor_normal') def displayResults(self, bible, second_bible=u''): """ From 02cea00591479c964a30fd5cbe1d7fcdd0be2ce7 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Mon, 10 Jan 2011 17:02:19 +0100 Subject: [PATCH 05/12] fixed wrong indent --- openlp/plugins/bibles/lib/mediaitem.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index c78597003..253cc2c62 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -423,7 +423,7 @@ class BibleMediaItem(MediaManagerItem): u'title': translate('BiblePlugin.MediaItem', 'Error'), u'message': translate('BiblePlugin.MediaItem', 'Bible not fully loaded') - }) + }) else: self.advancedSearchButton.setEnabled(True) self.adjustComboBox(1, self.chapter_count, self.advancedFromChapter) From a9359a60f18a253aab2917b6804298aaf0f1f9e3 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 10 Jan 2011 19:04:16 +0000 Subject: [PATCH 06/12] Unused import --- openlp/plugins/bibles/lib/mediaitem.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openlp/plugins/bibles/lib/mediaitem.py b/openlp/plugins/bibles/lib/mediaitem.py index 253cc2c62..1921fbc6d 100644 --- a/openlp/plugins/bibles/lib/mediaitem.py +++ b/openlp/plugins/bibles/lib/mediaitem.py @@ -25,7 +25,6 @@ ############################################################################### import logging -import time from PyQt4 import QtCore, QtGui From d4f98c2169bb4fcad8c704851f16d986d20f66b4 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 10 Jan 2011 19:07:09 +0000 Subject: [PATCH 07/12] Undefined variable typo --- openlp/core/ui/displaytagtab.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/displaytagtab.py b/openlp/core/ui/displaytagtab.py index 3d6cd813d..154d397b9 100644 --- a/openlp/core/ui/displaytagtab.py +++ b/openlp/core/ui/displaytagtab.py @@ -59,7 +59,7 @@ class DisplayTagTab(SettingsTab): # cPickle only accepts str not unicode strings user_expands_string = str(unicode(user_expands).encode(u'utf8')) if user_expands_string: - user_tags = cPickle.loads(user_expand_string) + user_tags = cPickle.loads(user_expands_string) # If we have some user ones added them as well for t in user_tags: DisplayTags.add_html_tag(t) From 8af1756274c1838448de928160d731567238dee7 Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 10 Jan 2011 19:13:40 +0000 Subject: [PATCH 08/12] Long lines --- openlp/core/ui/servicemanager.py | 15 ++++++++------- openlp/core/ui/thememanager.py | 6 ++++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index acd775ef7..5d8d12cb5 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -371,9 +371,9 @@ class ServiceManager(QtGui.QWidget): self.saveFile() fileName = unicode(QtGui.QFileDialog.getOpenFileName(self.mainwindow, translate('OpenLP.ServiceManager', 'Open File'), - SettingsManager.get_last_dir(self.mainwindow.serviceSettingsSection), - translate('OpenLP.ServiceManager', - 'OpenLP Service Files (*.osz)'))) + SettingsManager.get_last_dir( + self.mainwindow.serviceSettingsSection), + translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)'))) if not fileName: return False SettingsManager.set_last_dir(self.mainwindow.serviceSettingsSection, @@ -461,9 +461,9 @@ class ServiceManager(QtGui.QWidget): """ fileName = unicode(QtGui.QFileDialog.getSaveFileName(self.mainwindow, translate('OpenLP.ServiceManager', 'Save Service'), - SettingsManager.get_last_dir(self.mainwindow.serviceSettingsSection), - translate('OpenLP.ServiceManager', - 'OpenLP Service Files (*.osz)'))) + SettingsManager.get_last_dir( + self.mainwindow.serviceSettingsSection), + translate('OpenLP.ServiceManager', 'OpenLP Service Files (*.osz)'))) if not fileName: return False if os.path.splitext(fileName)[1] == u'': @@ -951,7 +951,8 @@ class ServiceManager(QtGui.QWidget): newItem.merge(item[u'service_item']) item[u'service_item'] = newItem self.repaintServiceList(itemcount + 1, 0) - self.mainwindow.liveController.replaceServiceManagerItem(newItem) + self.mainwindow.liveController.replaceServiceManagerItem( + newItem) self.setModified(True) def addServiceItem(self, item, rebuild=False, expand=None, replace=False): diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 590f33ff7..7e929bb33 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -51,7 +51,8 @@ class ThemeManager(QtGui.QWidget): self.settingsSection = u'themes' self.themeForm = ThemeForm(self) self.fileRenameForm = FileRenameForm(self) - self.serviceComboBox = self.mainwindow.ServiceManagerContents.themeComboBox + self.serviceComboBox = \ + self.mainwindow.ServiceManagerContents.themeComboBox # start with the layout self.layout = QtGui.QVBoxLayout(self) self.layout.setSpacing(0) @@ -638,7 +639,8 @@ class ThemeManager(QtGui.QWidget): Flag to tell message lines per page need to be generated. """ log.debug(u'generateImage \n%s ', themeData) - return self.mainwindow.renderManager.generate_preview(themeData, forcePage) + return self.mainwindow.renderManager.generate_preview( + themeData, forcePage) def getPreviewImage(self, theme): """ From ac46fe92f07250a18156a440e1cc211cb0e0a97e Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Mon, 10 Jan 2011 20:19:27 +0000 Subject: [PATCH 09/12] Remove redundant unicode() --- openlp/core/ui/servicemanager.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlp/core/ui/servicemanager.py b/openlp/core/ui/servicemanager.py index 5d8d12cb5..2d85e4b7f 100644 --- a/openlp/core/ui/servicemanager.py +++ b/openlp/core/ui/servicemanager.py @@ -482,7 +482,7 @@ class ServiceManager(QtGui.QWidget): zip = None fileTo = None try: - zip = zipfile.ZipFile(unicode(fileName)) + zip = zipfile.ZipFile(fileName) for file in zip.namelist(): try: ucsfile = file.decode(u'utf-8') From cf0608cc45756a54ea9e56500a1f8e29c9e73e2c Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 11 Jan 2011 17:13:17 +0000 Subject: [PATCH 10/12] Increase ooo verbosity to aid debugging --- openlp/plugins/presentations/lib/impresscontroller.py | 11 +++++------ openlp/plugins/songs/lib/oooimport.py | 8 ++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/openlp/plugins/presentations/lib/impresscontroller.py b/openlp/plugins/presentations/lib/impresscontroller.py index d7407b729..7c8cf593d 100644 --- a/openlp/plugins/presentations/lib/impresscontroller.py +++ b/openlp/plugins/presentations/lib/impresscontroller.py @@ -169,7 +169,7 @@ class ImpressController(PresentationController): try: return Dispatch(u'com.sun.star.ServiceManager') except pywintypes.com_error: - log.warn(u'Failed to get COM service manager. ' + log.exception(u'Failed to get COM service manager. ' u'Impress Controller has been disabled') return None @@ -257,7 +257,6 @@ class ImpressDocument(PresentationDocument): except: log.exception(u'Failed to load presentation %s' % url) return False - self.presentation = self.document.getPresentation() self.presentation.Display = \ self.controller.plugin.renderManager.screens.current_display + 1 @@ -327,8 +326,7 @@ class ImpressDocument(PresentationDocument): self.presentation = None self.document.dispose() except: - #We tried! - pass + log.exception("Closing presentation failed") self.document = None self.controller.remove_doc(self) @@ -339,13 +337,14 @@ class ImpressDocument(PresentationDocument): log.debug(u'is loaded OpenOffice') #print "is_loaded " if self.presentation is None or self.document is None: - #print "no present or document" + log.debug("is_loaded: no presentation or document") return False try: if self.document.getPresentation() is None: - #print "no getPresentation" + log.debug("getPresentation failed to find a presentation") return False except: + log.exception("getPresentation failed to find a presentation") return False return True diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index b467eab65..42ddfcdd1 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -116,7 +116,7 @@ class OooImport(SongImport): + u'socket,host=localhost,port=2002;' \ + u'urp;StarOffice.ComponentContext') except: - pass + log.exception("Failed to resolve uno connection") self.start_ooo_process() loop += 1 manager = ctx.ServiceManager @@ -143,7 +143,7 @@ class OooImport(SongImport): process.waitForStarted() self.process_started = True except: - pass + log.exception("start_ooo_process failed") def open_ooo_file(self, filepath): """ @@ -167,7 +167,7 @@ class OooImport(SongImport): self.import_wizard.incrementProgressBar( u'Processing file ' + filepath, 0) except: - pass + log.exception("open_ooo_file failed") return def close_ooo_file(self): @@ -232,4 +232,4 @@ class OooImport(SongImport): text += paratext + u'\n' songs = SongImport.process_songs_text(self.manager, text) for song in songs: - song.finish() \ No newline at end of file + song.finish() From e0a2976fa91a03da49c4f608b5722d97d9fb40ba Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Tue, 11 Jan 2011 23:43:27 +0000 Subject: [PATCH 11/12] Fix BibleServer downloads (Bug #701651) --- openlp/core/utils/__init__.py | 10 ++++++++-- openlp/plugins/bibles/lib/http.py | 10 +++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/openlp/core/utils/__init__.py b/openlp/core/utils/__init__.py index 4e1b4807b..5274a6186 100644 --- a/openlp/core/utils/__init__.py +++ b/openlp/core/utils/__init__.py @@ -282,13 +282,16 @@ def split_filename(path): else: return os.path.split(path) -def get_web_page(url, update_openlp=False): +def get_web_page(url, header=None, update_openlp=False): """ Attempts to download the webpage at url and returns that page or None. ``url`` The URL to be downloaded. + ``header`` + An optional HTTP header to pass in the request to the web server. + ``update_openlp`` Tells OpenLP to update itself if the page is successfully downloaded. Defaults to False. @@ -298,10 +301,13 @@ def get_web_page(url, update_openlp=False): # http://docs.python.org/library/urllib2.html if not url: return None + req = urllib2.Request(url) + if header: + req.add_header(header[0], header[1]) page = None log.debug(u'Downloading URL = %s' % url) try: - page = urllib2.urlopen(url) + page = urllib2.urlopen(req) log.debug(u'Downloaded URL = %s' % page.geturl()) except urllib2.URLError: log.exception(u'The web page could not be downloaded') diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 54fb5237c..2476ae65d 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -264,7 +264,8 @@ class BSExtract(object): log.debug(u'get_bible_chapter %s,%s,%s', version, bookname, chapter) chapter_url = u'http://m.bibleserver.com/text/%s/%s%s' % \ (version, bookname, chapter) - soup = get_soup_for_bible_ref(chapter_url) + header = (u'Accept-Language', u'en') + soup = get_soup_for_bible_ref(chapter_url, header) if not soup: return None Receiver.send_message(u'openlp_process_events') @@ -496,19 +497,22 @@ class HTTPBible(BibleDB): """ return HTTPBooks.get_verse_count(book, chapter) -def get_soup_for_bible_ref(reference_url, cleaner=None): +def get_soup_for_bible_ref(reference_url, header=None, cleaner=None): """ Gets a webpage and returns a parsed and optionally cleaned soup or None. ``reference_url`` The URL to obtain the soup from. + ``header`` + An optional HTTP header to pass to the bible web server. + ``cleaner`` An optional regex to use during webpage parsing. """ if not reference_url: return None - page = get_web_page(reference_url, True) + page = get_web_page(reference_url, header, True) if not page: send_error_message(u'download') return None From c32f8538d46e4e291f54faee065a188ca4b0dd1c Mon Sep 17 00:00:00 2001 From: Jon Tibble Date: Wed, 12 Jan 2011 03:25:45 +0000 Subject: [PATCH 12/12] Fix debugging patch --- openlp/plugins/songs/lib/oooimport.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/oooimport.py b/openlp/plugins/songs/lib/oooimport.py index 42ddfcdd1..c5cca4fd6 100644 --- a/openlp/plugins/songs/lib/oooimport.py +++ b/openlp/plugins/songs/lib/oooimport.py @@ -23,7 +23,7 @@ # with this program; if not, write to the Free Software Foundation, Inc., 59 # # Temple Place, Suite 330, Boston, MA 02111-1307 USA # ############################################################################### - +import logging import os from PyQt4 import QtCore @@ -31,6 +31,8 @@ from PyQt4 import QtCore from openlp.core.lib import Receiver from songimport import SongImport +log = logging.getLogger(__name__) + if os.name == u'nt': from win32com.client import Dispatch PAGE_BEFORE = 4