summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
Diffstat (limited to 'django')
-rw-r--r--django/template/base.py9
-rw-r--r--django/template/defaultfilters.py4
-rw-r--r--django/utils/safestring.py42
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))