import os
import mimetypes
import pkg_resources
from tg import expose, redirect, flash, config, validate, request, response
from tg.decorators import with_trailing_slash, without_trailing_slash
from webob import exc
from pylons import c, g
from allura.lib import helpers as h
from allura import model as M
class NewForgeController(object):
@expose()
@without_trailing_slash
def markdown_to_html(self, markdown, neighborhood=None, project=None, app=None):
"""Convert markdown to html."""
if neighborhood is None or project is None:
raise exc.HTTPBadRequest()
h.set_context(project, app, neighborhood=neighborhood)
html = g.markdown_wiki.convert(markdown)
return html
@expose()
@with_trailing_slash
def redirect(self, path, **kw):
"""Redirect to external sites."""
# Make sure the url can be encoded to iso-8859-1 (required for HTTP
# headers. If it can't, urlquote it first, then redirect. Allows us to
# redirect to external links in markdown, even if the url contains
# unquoted unicode chars.
try:
path.encode('ISO-8859-1')
except UnicodeEncodeError:
i = path.find('://')
if i > -1:
scheme = path[:i+3]
path = path[i+3:]
else:
scheme = ''
path = scheme + h.urlquote(path)
redirect(path)