From b76be3d6b8e52a170ea9e407bd184aeb711b3e8c Mon Sep 17 00:00:00 2001 From: Raoul Snyman Date: Sun, 11 Nov 2012 18:09:23 +0200 Subject: [PATCH] Fixed bug #1077654 where there were more classes in the CSS, but we were specifically looking for only one class. Made the code less brittle. Fixes: https://launchpad.net/bugs/1077654 --- openlp/core/lib/db.py | 13 ++++++++----- openlp/plugins/bibles/lib/http.py | 13 ++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/openlp/core/lib/db.py b/openlp/core/lib/db.py index eae6ef4a1..ea262bf42 100644 --- a/openlp/core/lib/db.py +++ b/openlp/core/lib/db.py @@ -85,11 +85,13 @@ def upgrade_db(url, upgrade): Provides a class for the metadata table. """ pass - load_changes = True + load_changes = False + tables = [] try: tables = upgrade.upgrade_setup(metadata) + load_changes = True except (SQLAlchemyError, DBAPIError): - load_changes = False + pass metadata_table = Table(u'metadata', metadata, Column(u'key', types.Unicode(64), primary_key=True), Column(u'value', types.UnicodeText(), default=None) @@ -99,6 +101,7 @@ def upgrade_db(url, upgrade): version_meta = session.query(Metadata).get(u'version') if version_meta is None: version_meta = Metadata.populate(key=u'version', value=u'0') + session.add(version_meta) version = 0 else: version = int(version_meta.value) @@ -111,17 +114,17 @@ def upgrade_db(url, upgrade): try: getattr(upgrade, u'upgrade_%d' % version) \ (session, metadata, tables) - version_meta.value = unicode(version) except (SQLAlchemyError, DBAPIError): log.exception(u'Could not run database upgrade script ' '"upgrade_%s", upgrade process has been halted.', version) break + version_meta.value = unicode(version) + session.commit() version += 1 else: version_meta = Metadata.populate(key=u'version', value=int(upgrade.__version__)) - session.add(version_meta) - session.commit() + session.commit() return int(version_meta.value), upgrade.__version__ diff --git a/openlp/plugins/bibles/lib/http.py b/openlp/plugins/bibles/lib/http.py index 28968372b..d33152e78 100644 --- a/openlp/plugins/bibles/lib/http.py +++ b/openlp/plugins/bibles/lib/http.py @@ -279,14 +279,8 @@ class BGExtract(object): page_source = unicode(page_source, u'utf8') except UnicodeDecodeError: page_source = unicode(page_source, u'cp1251') - page_source_temp = re.search(u'.*?'\ - u'
', page_source, re.DOTALL) - if page_source_temp: - soup = page_source_temp.group(0) - else: - soup = None try: - soup = BeautifulSoup(soup) + soup = BeautifulSoup(page_source) except HTMLParseError: log.error(u'BeautifulSoup could not parse the Bible page.') send_error_message(u'parse') @@ -295,8 +289,9 @@ class BGExtract(object): send_error_message(u'parse') return None Receiver.send_message(u'openlp_process_events') - content = soup.find(u'table', {u'class': u'infotable'}) - content = content.findAll(u'tr') + content = soup.find(u'table', u'infotable') + if content: + content = content.findAll(u'tr') if not content: log.error(u'No books found in the Biblegateway response.') send_error_message(u'parse')