|
11 | 11 | * reStructuredText, which requires docutils from http://docutils.sf.net/
|
12 | 12 | """
|
13 | 13 |
|
14 |
| -import warnings |
15 |
| - |
16 | 14 | from django import template
|
17 | 15 | from django.conf import settings
|
18 | 16 | from django.utils.encoding import smart_str, force_unicode
|
@@ -56,35 +54,21 @@ def markdown(value, arg=''):
|
56 | 54 | raise template.TemplateSyntaxError("Error in 'markdown' filter: The Python markdown library isn't installed.")
|
57 | 55 | return force_unicode(value)
|
58 | 56 | else:
|
59 |
| - # markdown.version was first added in 1.6b. The only version of markdown |
60 |
| - # to fully support extensions before 1.6b was the shortlived 1.6a. |
61 |
| - if hasattr(markdown, 'version'): |
| 57 | + markdown_vers = getattr(markdown, "version_info", 0) |
| 58 | + if markdown_vers < (2, 1): |
| 59 | + if settings.DEBUG: |
| 60 | + raise template.TemplateSyntaxError( |
| 61 | + "Error in 'markdown' filter: Django does not support versions of the Python markdown library < 2.1.") |
| 62 | + return force_unicode(value) |
| 63 | + else: |
62 | 64 | extensions = [e for e in arg.split(",") if e]
|
63 |
| - if len(extensions) > 0 and extensions[0] == "safe": |
| 65 | + if extensions and extensions[0] == "safe": |
64 | 66 | extensions = extensions[1:]
|
65 |
| - safe_mode = True |
| 67 | + return mark_safe(markdown.markdown( |
| 68 | + force_unicode(value), extensions, safe_mode=True, enable_attributes=False)) |
66 | 69 | else:
|
67 |
| - safe_mode = False |
68 |
| - python_markdown_deprecation = "The use of Python-Markdown " |
69 |
| - "< 2.1 in Django is deprecated; please update to the current version" |
70 |
| - # Unicode support only in markdown v1.7 or above. Version_info |
71 |
| - # exist only in markdown v1.6.2rc-2 or above. |
72 |
| - markdown_vers = getattr(markdown, "version_info", None) |
73 |
| - if markdown_vers < (1,7): |
74 |
| - warnings.warn(python_markdown_deprecation, DeprecationWarning) |
75 |
| - return mark_safe(force_unicode(markdown.markdown(smart_str(value), extensions, safe_mode=safe_mode))) |
76 |
| - else: |
77 |
| - if markdown_vers >= (2,1): |
78 |
| - if safe_mode: |
79 |
| - return mark_safe(markdown.markdown(force_unicode(value), extensions, safe_mode=safe_mode, enable_attributes=False)) |
80 |
| - else: |
81 |
| - return mark_safe(markdown.markdown(force_unicode(value), extensions, safe_mode=safe_mode)) |
82 |
| - else: |
83 |
| - warnings.warn(python_markdown_deprecation, DeprecationWarning) |
84 |
| - return mark_safe(markdown.markdown(force_unicode(value), extensions, safe_mode=safe_mode)) |
85 |
| - else: |
86 |
| - warnings.warn(python_markdown_deprecation, DeprecationWarning) |
87 |
| - return mark_safe(force_unicode(markdown.markdown(smart_str(value)))) |
| 70 | + return mark_safe(markdown.markdown( |
| 71 | + force_unicode(value), extensions, safe_mode=False)) |
88 | 72 |
|
89 | 73 | @register.filter(is_safe=True)
|
90 | 74 | def restructuredtext(value):
|
|
0 commit comments