# HG changeset patch # User Marcin Kuzminski # Date 2012-08-27 10:15:36 # Node ID cdce3d7282b2140506b7bdce422b4c8fc47cf76a # Parent 49a4864b11c1221de0dc51c54dbbb63b10c90af7 catch errors on renderers, and display plain if critical rendering error is present diff --git a/rhodecode/lib/markup_renderer.py b/rhodecode/lib/markup_renderer.py --- a/rhodecode/lib/markup_renderer.py +++ b/rhodecode/lib/markup_renderer.py @@ -26,6 +26,7 @@ import re import logging +import traceback from rhodecode.lib.utils2 import safe_unicode, MENTIONS_REGEX @@ -93,7 +94,7 @@ class MarkupRenderer(object): return '
' + source.replace("\n", '
') @classmethod - def markdown(cls, source): + def markdown(cls, source, safe=True): source = safe_unicode(source) try: import markdown as __markdown @@ -101,9 +102,15 @@ class MarkupRenderer(object): except ImportError: log.warning('Install markdown to use this function') return cls.plain(source) + except Exception: + log.error(traceback.format_exc()) + if safe: + return source + else: + raise @classmethod - def rst(cls, source): + def rst(cls, source, safe=True): source = safe_unicode(source) try: from docutils.core import publish_parts @@ -125,6 +132,12 @@ class MarkupRenderer(object): except ImportError: log.warning('Install docutils to use this function') return cls.plain(source) + except Exception: + log.error(traceback.format_exc()) + if safe: + return source + else: + raise @classmethod def rst_with_mentions(cls, source):