28 lines
799 B
Python
28 lines
799 B
Python
from django import template
|
|
from django.utils.safestring import mark_safe
|
|
import markdown
|
|
import bleach
|
|
from django.utils.html import escape
|
|
from markdown.extensions import Extension
|
|
|
|
class EscapeHtml(Extension):
|
|
def extendMarkdown(self, md):
|
|
md.preprocessors.deregister('html_block')
|
|
md.inlinePatterns.deregister('html')
|
|
|
|
register = template.Library()
|
|
|
|
md = markdown.Markdown(extensions=["fenced_code", "nl2br", "smarty", "codehilite", EscapeHtml()])
|
|
|
|
@register.filter(needs_autoescape=True)
|
|
def markdown(value, autoescape=True):
|
|
html = mark_safe(bleach.linkify(md.convert(value)))
|
|
# html = value
|
|
md.reset()
|
|
return html
|
|
|
|
@register.filter(needs_autoescape=True)
|
|
def nl_br(value, autoescape=True):
|
|
html = mark_safe(value.replace("\n", "<br>"))
|
|
return html
|