import gettext
import pkg_resources
import smtplib
-import os
import sys
import re
import urllib
from babel.localedata import exists
import jinja2
import translitcodec
-from paste.deploy.loadwsgi import NicerConfigParser
from webob import Response, exc
from lxml.html.clean import Cleaner
+import markdown
from mediagoblin import mg_globals
+from mediagoblin import messages
from mediagoblin.db.util import ObjectId
-
TESTS_ENABLED = False
def _activate_testing():
"""
clear_test_template_context()
-def get_jinja_loader(user_template_path=None):
- """
- Set up the Jinja template loaders, possibly allowing for user
- overridden templates.
-
- (In the future we may have another system for providing theming;
- for now this is good enough.)
- """
- if user_template_path:
- return jinja2.ChoiceLoader(
- [jinja2.FileSystemLoader(user_template_path),
- jinja2.PackageLoader('mediagoblin', 'templates')])
- else:
- return jinja2.PackageLoader('mediagoblin', 'templates')
-
-
SETUP_JINJA_ENVS = {}
template_env = jinja2.Environment(
loader=template_loader, autoescape=True,
- extensions=['jinja2.ext.i18n'])
+ extensions=['jinja2.ext.i18n', 'jinja2.ext.autoescape'])
template_env.install_gettext_callables(
mg_globals.translations.gettext,
mg_globals.translations.ngettext)
+ # All templates will know how to ...
+ # ... fetch all waiting messages and remove them from the queue
+ template_env.globals['fetch_messages'] = messages.fetch_messages
+
if exists(locale):
SETUP_JINJA_ENVS[locale] = template_env
def clean_html(html):
+ # clean_html barfs on an empty string
+ if not html:
+ return u''
+
return HTML_CLEANER.clean_html(html)
+MARKDOWN_INSTANCE = markdown.Markdown(safe_mode='escape')
+
+
+def cleaned_markdown_conversion(text):
+ """
+ Take a block of text, run it through MarkDown, and clean its HTML.
+ """
+ # Markdown will do nothing with and clean_html can do nothing with
+ # an empty string :)
+ if not text:
+ return u''
+
+ return clean_html(MARKDOWN_INSTANCE.convert(text))
+
+
SETUP_GETTEXTS = {}
def setup_gettext(locale):