From 614dc2648bc3945760f6e22c94df52c37fe9af15 Mon Sep 17 00:00:00 2001 From: Jonathan Corwin Date: Thu, 5 Jul 2012 20:24:56 +0100 Subject: [PATCH] Use new strip_rtf routine and error trap --- openlp/plugins/songs/lib/__init__.py | 2 +- openlp/plugins/songs/lib/importer.py | 1 + openlp/plugins/songs/lib/mediashoutimport.py | 8 +++++++- openlp/plugins/songs/lib/songproimport.py | 4 +++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/songs/lib/__init__.py b/openlp/plugins/songs/lib/__init__.py index a51f3f2fc..d984d5a8d 100644 --- a/openlp/plugins/songs/lib/__init__.py +++ b/openlp/plugins/songs/lib/__init__.py @@ -476,7 +476,7 @@ def get_encoding(font, font_table, default_encoding, failed=False): Dictionary of fonts and respective encodings. ``default_encoding`` - The defaul encoding to use when font_table is empty or no font is used. + The default encoding to use when font_table is empty or no font is used. ``failed`` A boolean indicating whether the previous encoding didn't work. diff --git a/openlp/plugins/songs/lib/importer.py b/openlp/plugins/songs/lib/importer.py index 665377c65..209539475 100644 --- a/openlp/plugins/songs/lib/importer.py +++ b/openlp/plugins/songs/lib/importer.py @@ -28,6 +28,7 @@ """ The :mod:`importer` modules provides the general song import functionality. """ +import os import logging from openlp.core.lib import translate diff --git a/openlp/plugins/songs/lib/mediashoutimport.py b/openlp/plugins/songs/lib/mediashoutimport.py index c8e21644b..2af9e8cfd 100644 --- a/openlp/plugins/songs/lib/mediashoutimport.py +++ b/openlp/plugins/songs/lib/mediashoutimport.py @@ -56,8 +56,14 @@ class MediaShoutImport(SongImport): """ Receive a single file to import. """ - conn = pyodbc.connect(u'DRIVER={Microsoft Access Driver (*.mdb)};' + try: + conn = pyodbc.connect(u'DRIVER={Microsoft Access Driver (*.mdb)};' u'DBQ=%s;PWD=6NOZ4eHK7k' % self.importSource) + except: # Unfortunately no specific exception type + self.logError(self.importSource, + translate('SongsPlugin.MediaShoutImport', + 'Unable to open the MediaShout database.')) + return cursor = conn.cursor() cursor.execute(u'SELECT Record, Title, Author, Copyright, ' u'SongID, CCLI, Notes FROM Songs ORDER BY Title') diff --git a/openlp/plugins/songs/lib/songproimport.py b/openlp/plugins/songs/lib/songproimport.py index 9ca30ca95..9f4148308 100644 --- a/openlp/plugins/songs/lib/songproimport.py +++ b/openlp/plugins/songs/lib/songproimport.py @@ -81,6 +81,7 @@ class SongProImport(SongImport): """ Receive a single file or a list of files to import. """ + self.encoding = None with open(self.importSource, 'r') as songs_file: self.importWizard.progressBar.setMaximum(0) tag = u'' @@ -112,7 +113,8 @@ class SongProImport(SongImport): self.finish() return if u'rtf1' in text: - text = strip_rtf(text, u'cp1252').rstrip() + text, self.encoding = strip_rtf(text, self.encoding) + text = text.rstrip() if not text: return if tag == u'A':