Mercurial > public > sg101
view core/markup.py @ 629:f4c043cf55ac
Wiki integration. Requests don't always have sessions.
In particular this occurs when a request is made without a trailing slash.
The Common middleware redirects when this happens, and the middleware
process_request() processing stops before a session can get added.
So just set an attribute on the request object for each operation.
This seemed weird to me at first, but there are plenty of examples of this
in the Django code base already.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Tue, 13 Nov 2012 13:50:06 -0600 |
parents | ee87ea74d46b |
children | 216f06267e2d |
line wrap: on
line source
""" Markup related utitlities useful for the entire project. """ import markdown as _markdown from django.utils.encoding import force_unicode from smiley import SmilifyMarkdown class Markdown(object): """ This is a thin wrapper around the Markdown class which deals with the differences in Markdown versions on the production and development server. This code was inspired by the code in django/contrib/markup/templatetags/markup.py. Currently, we only have to worry about Markdown 1.6b and 2.0. """ def __init__(self, safe_mode='escape'): # Unicode support only in markdown v1.7 or above. Version_info # exists only in markdown v1.6.2rc-2 or above. self.unicode_support = getattr(_markdown, "version_info", None) >= (1, 7) self.md = _markdown.Markdown(safe_mode=safe_mode, extensions=['urlize', 'nl2br', 'del']) def convert(self, s): if self.unicode_support: return self.md.convert(force_unicode(s)) else: return force_unicode(self.md.convert(s)) def markdown(s): """ A convenience function for one-off markdown jobs. """ md = Markdown() return md.convert(s) class SiteMarkup(object): """ This class provides site markup by combining markdown and our own smiley markup. """ def __init__(self): self.md = Markdown() self.smiley = SmilifyMarkdown() def convert(self, s): return self.md.convert(self.smiley.convert(s)) def site_markup(s): """ Convenience function for one-off site markup jobs. """ sm = SiteMarkup() return sm.convert(s)