From a05186c6cbbd2fc434694d126cfdbe70e96be72b Mon Sep 17 00:00:00 2001 From: Weitian LI Date: Tue, 29 Apr 2014 09:06:52 +0800 Subject: * implemented 'my_markdown' templatetag (requires python-markdown) * updated 'list_notice.html' .notice-content with my_markdown tag * added help_text for notice/models.py/Notice contents field --- notice/models.py | 3 ++- notice/templates/notice/list_notice.html | 3 ++- notice/templatetags/__init__.py | 0 notice/templatetags/my_markdown.py | 26 ++++++++++++++++++++++++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 notice/templatetags/__init__.py create mode 100644 notice/templatetags/my_markdown.py diff --git a/notice/models.py b/notice/models.py index e2b9533..63b17b2 100644 --- a/notice/models.py +++ b/notice/models.py @@ -15,7 +15,8 @@ class Notice(models.Model): pubtime = models.DateTimeField(_("Publish time"), auto_now_add=True) category = models.ForeignKey('NoticeCategory', verbose_name=_("Category")) is_important = models.BooleanField(_("Is important"), default=False) - contents = models.TextField(_("Contents")) + contents = models.TextField(_("Contents"), + help_text=_("Markdown syntax supported")) # NoticeAttachment to deal with attachments attachments = generic.GenericRelation('NoticeAttachment') diff --git a/notice/templates/notice/list_notice.html b/notice/templates/notice/list_notice.html index 14355f0..e0f2011 100644 --- a/notice/templates/notice/list_notice.html +++ b/notice/templates/notice/list_notice.html @@ -3,6 +3,7 @@ {% load url from future %} {% load i18n %} {% load bootstrap3 %} +{% load my_markdown %} {# template to show notice list #} @@ -24,7 +25,7 @@

{{ notice.show_pubtime }}, {{ notice.category.category_name }}

- {{ notice.contents }} + {{ notice.contents|my_markdown }}
{% if notice.attachments.all %}
diff --git a/notice/templatetags/__init__.py b/notice/templatetags/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/notice/templatetags/my_markdown.py b/notice/templatetags/my_markdown.py new file mode 100644 index 0000000..6b25146 --- /dev/null +++ b/notice/templatetags/my_markdown.py @@ -0,0 +1,26 @@ +# -*- coding: utf8 -*- + +""" +implement my own 'markdown' template tag +requires 'python-markdown' (pip install markdown) +""" +# ref: http://www.dominicrodger.com/django-markdown.html + +import markdown + +from django import template +from django.template.defaultfilters import stringfilter +from django.utils.encoding import force_unicode +from django.utils.safestring import mark_safe + +register = template.Library() + +@register.filter(is_safe=True) +@stringfilter +def my_markdown(value): + extensions = ["nl2br", ] + + return mark_safe(markdown.markdown(force_unicode(value), + extensions, + safe_mode=True, + enable_attributes=False)) -- cgit v1.2.2