diff options
Diffstat (limited to 'django')
-rw-r--r-- | django/template/base.py | 9 | ||||
-rw-r--r-- | django/template/defaultfilters.py | 4 | ||||
-rw-r--r-- | django/utils/safestring.py | 42 |
3 files changed, 4 insertions, 51 deletions
diff --git a/django/template/base.py b/django/template/base.py index 50b55f4b69..25174a1518 100644 --- a/django/template/base.py +++ b/django/template/base.py @@ -68,9 +68,7 @@ from django.utils.encoding import ( from django.utils.formats import localize from django.utils.html import conditional_escape, escape from django.utils.inspect import getargspec -from django.utils.safestring import ( - EscapeData, SafeData, mark_for_escaping, mark_safe, -) +from django.utils.safestring import SafeData, mark_safe from django.utils.text import ( get_text_list, smart_split, unescape_string_literal, ) @@ -737,8 +735,6 @@ class FilterExpression(object): new_obj = func(obj, *arg_vals) if getattr(func, 'is_safe', False) and isinstance(obj, SafeData): obj = mark_safe(new_obj) - elif isinstance(obj, EscapeData): - obj = mark_for_escaping(new_obj) else: obj = new_obj return obj @@ -1012,8 +1008,7 @@ def render_value_in_context(value, context): value = template_localtime(value, use_tz=context.use_tz) value = localize(value, use_l10n=context.use_l10n) value = force_text(value) - if ((context.autoescape and not isinstance(value, SafeData)) or - isinstance(value, EscapeData)): + if context.autoescape: return conditional_escape(value) else: return value diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py index a7c9b718ff..85d1aaa3c0 100644 --- a/django/template/defaultfilters.py +++ b/django/template/defaultfilters.py @@ -16,7 +16,7 @@ from django.utils.html import ( strip_tags, urlize as _urlize, ) from django.utils.http import urlquote -from django.utils.safestring import SafeData, mark_for_escaping, mark_safe +from django.utils.safestring import SafeData, mark_safe from django.utils.text import ( Truncator, normalize_newlines, phone2numeric, slugify as _slugify, wrap, ) @@ -441,7 +441,7 @@ def escape_filter(value): """ Marks the value as a string that should be auto-escaped. """ - return mark_for_escaping(value) + return conditional_escape(value) @register.filter(is_safe=True) diff --git a/django/utils/safestring.py b/django/utils/safestring.py index 3d3bf1b62a..40be743c04 100644 --- a/django/utils/safestring.py +++ b/django/utils/safestring.py @@ -8,31 +8,6 @@ from django.utils import six from django.utils.functional import Promise, curry -class EscapeData(object): - pass - - -class EscapeBytes(bytes, EscapeData): - """ - A byte string that should be HTML-escaped when output. - """ - pass - - -class EscapeText(six.text_type, EscapeData): - """ - A unicode string object that should be HTML-escaped when output. - """ - pass - -if six.PY3: - EscapeString = EscapeText -else: - EscapeString = EscapeBytes - # backwards compatibility for Python 2 - EscapeUnicode = EscapeText - - class SafeData(object): def __html__(self): """ @@ -128,20 +103,3 @@ def mark_safe(s): if isinstance(s, (six.text_type, Promise)): return SafeText(s) return SafeString(str(s)) - - -def mark_for_escaping(s): - """ - Explicitly mark a string as requiring HTML escaping upon output. Has no - effect on SafeData subclasses. - - Can be called multiple times on a single string (the resulting escaping is - only applied once). - """ - if hasattr(s, '__html__') or isinstance(s, EscapeData): - return s - if isinstance(s, bytes) or (isinstance(s, Promise) and s._delegate_bytes): - return EscapeBytes(s) - if isinstance(s, (six.text_type, Promise)): - return EscapeText(s) - return EscapeString(str(s)) |