• R/O
  • HTTP
  • SSH
  • HTTPS

提交

标签
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

allura


Commit MetaInfo

修订版f52a58f08cd6111964729c8319cad2ba834c5536 (tree)
时间2012-06-28 19:36:05
作者Igor Bondarenko <jetmind2@gmai...>
CommiterIgor Bondarenko

Log Message

[#4186] ticket:96 Added error handling

更改概述

差异

--- a/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
+++ b/ForgeWiki/forgewiki/command/wiki2markdown/extractors.py
@@ -3,6 +3,7 @@ import os
33 import shutil
44 import json
55 import hashlib
6+from MySQLdb import DatabaseError
67
78 from allura.command import base as allura_base
89
@@ -41,7 +42,11 @@ class MySQLExtractor(MediawikiExtractor):
4142
4243 def connection(self):
4344 if not self._connection:
44- self._connection = MySQLdb.connect(**self.db_options)
45+ try:
46+ self._connection = MySQLdb.connect(**self.db_options)
47+ except DatabaseError, e:
48+ allura_base.log.error("Can't connect to database: %s" % str(e))
49+ exit(2)
4550 return self._connection
4651
4752 def _save(self, content, *paths):
--- a/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
+++ b/ForgeWiki/forgewiki/command/wiki2markdown/loaders.py
@@ -61,8 +61,16 @@ class MediawikiLoader(object):
6161 pages.sort() # ensure that history in right order
6262 for page in pages:
6363 fn = os.path.join(page_dir, page)
64- with open(fn, 'r') as pages_file:
65- page_data = json.load(pages_file)
64+ try:
65+ with open(fn, 'r') as pages_file:
66+ page_data = json.load(pages_file)
67+ except IOError, e:
68+ allura_base.log.error("Can't open file: %s" % str(e))
69+ exit(2)
70+ except ValueError, e:
71+ allura_base.log.error("Can't load data from file %s: %s"
72+ % (fn, str(e)))
73+ exit(2)
6674 yield page_data
6775
6876 def _talk(self, page_dir):
@@ -70,8 +78,16 @@ class MediawikiLoader(object):
7078 filename = os.path.join(page_dir, 'discussion.json')
7179 if not os.path.isfile(filename):
7280 return
73- with open(filename, 'r') as talk_file:
74- talk_data = json.load(talk_file)
81+ try:
82+ with open(filename, 'r') as talk_file:
83+ talk_data = json.load(talk_file)
84+ except IOError, e:
85+ allura_base.log.error("Can't open file: %s" % str(e))
86+ exit(2)
87+ except ValueError, e:
88+ allura_base.log.error("Can't load data from file %s: %s"
89+ % (filename, str(e)))
90+ exit(2)
7591 return talk_data
7692
7793 def _attachments(self, page_dir):
@@ -142,7 +158,11 @@ class MediawikiLoader(object):
142158 page = WM.Page.query.get(app_config_id=self.wiki.config._id,
143159 title=page_title)
144160 for filename, path in self._attachments(page_dir):
145- with open(path) as fp:
146- page.attach(filename, fp,
147- content_type=utils.guess_mime_type(filename))
161+ try:
162+ with open(path) as fp:
163+ page.attach(filename, fp,
164+ content_type=utils.guess_mime_type(filename))
165+ except IOError, e:
166+ allura_base.log.error("Can't open file: %s" % str(e))
167+ exit(2)
148168 allura_base.log.info('Loaded attachments for page %s.' % page_title)
--- a/ForgeWiki/forgewiki/tests/test_converters.py
+++ b/ForgeWiki/forgewiki/tests/test_converters.py
@@ -23,13 +23,14 @@ def test_mediawiki2markdown():
2323 mediawiki_text = """
2424 '''bold''' ''italics''
2525 == Getting started ==
26-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
26+* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration]
2727 * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
2828 """
2929 mediawiki_output = converters.mediawiki2markdown(mediawiki_text)
3030 assert "**bold** _italics_" in mediawiki_output
3131 assert "## Getting started" in mediawiki_output
32- assert "* [MediaWiki FAQ](http://www.mediawiki.org/wiki/Manual:FAQ)" in mediawiki_output
32+ assert ("* [MediaWiki FAQ](http://www.mediawiki.org/wiki/Manual:FAQ)"
33+ in mediawiki_output)
3334
3435
3536 def test_mediawiki_internal_links2markdown():