Custom markdown filter, 3rd party one wasn't thread safe

This commit is contained in:
Gina Häußge 2016-07-21 11:50:29 +02:00
parent d61371a495
commit 5d21399a73
3 changed files with 18 additions and 3 deletions

View file

@ -23,7 +23,7 @@ INSTALL_REQUIRES = [
"Flask-Principal>=0.3.5,<0.4",
"Flask-Babel>=0.9,<0.10",
"Flask-Assets>=0.10,<0.11",
"Flask-Markdown>=0.3,<0.4",
"markdown>=2.6.4,<2.7",
"pyserial>=2.7,<2.8",
"netaddr>=0.7.17,<0.8",
"watchdog>=0.8.3,<0.9",

View file

@ -12,7 +12,6 @@ from flask.ext.login import LoginManager, current_user
from flask.ext.principal import Principal, Permission, RoleNeed, identity_loaded, UserNeed
from flask.ext.babel import Babel, gettext, ngettext
from flask.ext.assets import Environment, Bundle
from flaskext.markdown import Markdown
from babel import Locale
from watchdog.observers import Observer
from watchdog.observers.polling import PollingObserver
@ -649,7 +648,8 @@ class Server(object):
response.headers.add("X-Clacks-Overhead", "GNU Terry Pratchett")
return response
Markdown(app)
from octoprint.util.jinja import MarkdownFilter
MarkdownFilter(app)
def _setup_i18n(self, app):
global babel

View file

@ -159,3 +159,18 @@ class ExceptionHandlerExtension(Extension):
return "Unknown error"
trycatch = ExceptionHandlerExtension
class MarkdownFilter(object):
def __init__(self, app, **markdown_options):
self._markdown_options = markdown_options
app.jinja_env.filters.setdefault("markdown", self)
def __call__(self, stream):
from jinja2 import Markup
from markdown import Markdown
# Markdown is not thread safe
markdown = Markdown(**self._markdown_options)
return Markup(markdown.convert(stream))