[#4186] ticket:96 Added error handling
diff --git a/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py b/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
index 4753673..ad8dfa1 100644
--- a/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
+++ b/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
@@ -3,6 +3,7 @@
import shutil
import json
import hashlib
+from MySQLdb import DatabaseError
from allura.command import base as allura_base
@@ -41,7 +42,11 @@
def connection(self):
if not self._connection:
- self._connection = MySQLdb.connect(**self.db_options)
+ try:
+ self._connection = MySQLdb.connect(**self.db_options)
+ except DatabaseError, e:
+ allura_base.log.error("Can't connect to database: %s" % str(e))
+ exit(2)
return self._connection
def _save(self, content, *paths):
diff --git a/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py b/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
index 87e0031..e149c71 100644
--- a/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
+++ b/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
@@ -61,8 +61,16 @@
pages.sort() # ensure that history in right order
for page in pages:
fn = os.path.join(page_dir, page)
- with open(fn, 'r') as pages_file:
- page_data = json.load(pages_file)
+ try:
+ with open(fn, 'r') as pages_file:
+ page_data = json.load(pages_file)
+ except IOError, e:
+ allura_base.log.error("Can't open file: %s" % str(e))
+ exit(2)
+ except ValueError, e:
+ allura_base.log.error("Can't load data from file %s: %s"
+ % (fn, str(e)))
+ exit(2)
yield page_data
def _talk(self, page_dir):
@@ -70,8 +78,16 @@
filename = os.path.join(page_dir, 'discussion.json')
if not os.path.isfile(filename):
return
- with open(filename, 'r') as talk_file:
- talk_data = json.load(talk_file)
+ try:
+ with open(filename, 'r') as talk_file:
+ talk_data = json.load(talk_file)
+ except IOError, e:
+ allura_base.log.error("Can't open file: %s" % str(e))
+ exit(2)
+ except ValueError, e:
+ allura_base.log.error("Can't load data from file %s: %s"
+ % (filename, str(e)))
+ exit(2)
return talk_data
def _attachments(self, page_dir):
@@ -142,7 +158,11 @@
page = WM.Page.query.get(app_config_id=self.wiki.config._id,
title=page_title)
for filename, path in self._attachments(page_dir):
- with open(path) as fp:
- page.attach(filename, fp,
- content_type=utils.guess_mime_type(filename))
+ try:
+ with open(path) as fp:
+ page.attach(filename, fp,
+ content_type=utils.guess_mime_type(filename))
+ except IOError, e:
+ allura_base.log.error("Can't open file: %s" % str(e))
+ exit(2)
allura_base.log.info('Loaded attachments for page %s.' % page_title)
diff --git a/ForgeWiki/forgewiki/tests/test_converters.py b/ForgeWiki/forgewiki/tests/test_converters.py
index 8787898..72a0227 100644
--- a/ForgeWiki/forgewiki/tests/test_converters.py
+++ b/ForgeWiki/forgewiki/tests/test_converters.py
@@ -23,13 +23,14 @@
mediawiki_text = """
'''bold''' ''italics''
== Getting started ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration]
* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
"""
mediawiki_output = converters.mediawiki2markdown(mediawiki_text)
assert "**bold** _italics_" in mediawiki_output
assert "## Getting started" in mediawiki_output
- assert "* [MediaWiki FAQ](http://www.mediawiki.org/wiki/Manual:FAQ)" in mediawiki_output
+ assert ("* [MediaWiki FAQ](http://www.mediawiki.org/wiki/Manual:FAQ)"
+ in mediawiki_output)
def test_mediawiki_internal_links2markdown():