summaryrefslogtreecommitdiff
path: root/django/template
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2012-08-10 12:40:37 +0100
committerAndrew Godwin <andrew@aeracode.org>2012-08-10 12:40:37 +0100
commit184cf9ab798d5b25d855649ddb2ca580949778df (patch)
tree8512633ec04a6979b0953e32e73c9a43d09e5805 /django/template
parentc4b2a3262cc79383d6562cfc7e9af20135c8e0bf (diff)
parent7275576235ae2e87f3de7b0facb3f9b0a2368f28 (diff)
Merge branch 'master' into schema-alteration
Diffstat (limited to 'django/template')
-rw-r--r--django/template/base.py14
-rw-r--r--django/template/debug.py4
-rw-r--r--django/template/defaultfilters.py18
-rw-r--r--django/template/defaulttags.py11
-rw-r--r--django/template/loader_tags.py5
-rw-r--r--django/template/loaders/app_directories.py8
6 files changed, 33 insertions, 27 deletions
diff --git a/django/template/base.py b/django/template/base.py
index 489b1681e0..661d8c092a 100644
--- a/django/template/base.py
+++ b/django/template/base.py
@@ -11,7 +11,7 @@ from django.utils.importlib import import_module
from django.utils.itercompat import is_iterable
from django.utils.text import (smart_split, unescape_string_literal,
get_text_list)
-from django.utils.encoding import smart_unicode, force_unicode, smart_str
+from django.utils.encoding import smart_text, force_text, smart_bytes
from django.utils.translation import ugettext_lazy, pgettext_lazy
from django.utils.safestring import (SafeData, EscapeData, mark_safe,
mark_for_escaping)
@@ -89,7 +89,7 @@ class VariableDoesNotExist(Exception):
return six.text_type(self).encode('utf-8')
def __unicode__(self):
- return self.msg % tuple([force_unicode(p, errors='replace')
+ return self.msg % tuple([force_text(p, errors='replace')
for p in self.params])
class InvalidTemplateLibrary(Exception):
@@ -117,7 +117,7 @@ class Template(object):
def __init__(self, template_string, origin=None,
name='<Unknown Template>'):
try:
- template_string = smart_unicode(template_string)
+ template_string = smart_text(template_string)
except UnicodeDecodeError:
raise TemplateEncodingError("Templates can only be constructed "
"from unicode or UTF-8 strings.")
@@ -831,7 +831,7 @@ class NodeList(list):
bit = self.render_node(node, context)
else:
bit = node
- bits.append(force_unicode(bit))
+ bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
@@ -849,7 +849,7 @@ class TextNode(Node):
self.s = s
def __repr__(self):
- return "<Text Node: '%s'>" % smart_str(self.s[:25], 'ascii',
+ return "<Text Node: '%s'>" % smart_bytes(self.s[:25], 'ascii',
errors='replace')
def render(self, context):
@@ -863,7 +863,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_unicode(value)
+ value = force_text(value)
if ((context.autoescape and not isinstance(value, SafeData)) or
isinstance(value, EscapeData)):
return escape(value)
@@ -961,7 +961,7 @@ def parse_bits(parser, bits, params, varargs, varkw, defaults,
kwarg = token_kwargs([bit], parser)
if kwarg:
# The kwarg was successfully extracted
- param, value = kwarg.items()[0]
+ param, value = list(six.iteritems(kwarg))[0]
if param not in params and varkw is None:
# An unexpected keyword argument was supplied
raise TemplateSyntaxError(
diff --git a/django/template/debug.py b/django/template/debug.py
index 61674034d6..c7ac007b48 100644
--- a/django/template/debug.py
+++ b/django/template/debug.py
@@ -1,5 +1,5 @@
from django.template.base import Lexer, Parser, tag_re, NodeList, VariableNode, TemplateSyntaxError
-from django.utils.encoding import force_unicode
+from django.utils.encoding import force_text
from django.utils.html import escape
from django.utils.safestring import SafeData, EscapeData
from django.utils.formats import localize
@@ -84,7 +84,7 @@ class DebugVariableNode(VariableNode):
output = self.filter_expression.resolve(context)
output = template_localtime(output, use_tz=context.use_tz)
output = localize(output, use_l10n=context.use_l10n)
- output = force_unicode(output)
+ output = force_text(output)
except UnicodeDecodeError:
return ''
except Exception as e:
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index fa799cd46f..16801fd573 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -12,7 +12,7 @@ from django.template.base import Variable, Library, VariableDoesNotExist
from django.conf import settings
from django.utils import formats
from django.utils.dateformat import format, time_format
-from django.utils.encoding import force_unicode, iri_to_uri
+from django.utils.encoding import force_text, iri_to_uri
from django.utils.html import (conditional_escape, escapejs, fix_ampersands,
escape, urlize as urlize_impl, linebreaks, strip_tags)
from django.utils.http import urlquote
@@ -38,7 +38,7 @@ def stringfilter(func):
def _dec(*args, **kwargs):
if args:
args = list(args)
- args[0] = force_unicode(args[0])
+ args[0] = force_text(args[0])
if (isinstance(args[0], SafeData) and
getattr(_dec._decorated_function, 'is_safe', False)):
return mark_safe(func(*args, **kwargs))
@@ -139,7 +139,7 @@ def floatformat(text, arg=-1):
"""
try:
- input_val = force_unicode(text)
+ input_val = force_text(text)
d = Decimal(input_val)
except UnicodeEncodeError:
return ''
@@ -147,7 +147,7 @@ def floatformat(text, arg=-1):
if input_val in special_floats:
return input_val
try:
- d = Decimal(force_unicode(float(text)))
+ d = Decimal(force_text(float(text)))
except (ValueError, InvalidOperation, TypeError, UnicodeEncodeError):
return ''
try:
@@ -192,7 +192,7 @@ def floatformat(text, arg=-1):
@stringfilter
def iriencode(value):
"""Escapes an IRI value for use in a URL."""
- return force_unicode(iri_to_uri(value))
+ return force_text(iri_to_uri(value))
@register.filter(is_safe=True, needs_autoescape=True)
@stringfilter
@@ -462,7 +462,7 @@ def safeseq(value):
individually, as safe, after converting them to unicode. Returns a list
with the results.
"""
- return [mark_safe(force_unicode(obj)) for obj in value]
+ return [mark_safe(force_text(obj)) for obj in value]
@register.filter(is_safe=True)
@stringfilter
@@ -521,7 +521,7 @@ def join(value, arg, autoescape=None):
"""
Joins a list with a string, like Python's ``str.join(list)``.
"""
- value = map(force_unicode, value)
+ value = map(force_text, value)
if autoescape:
value = [conditional_escape(v) for v in value]
try:
@@ -661,7 +661,7 @@ def unordered_list(value, autoescape=None):
sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist,
indent, indent)
output.append('%s<li>%s%s</li>' % (indent,
- escaper(force_unicode(title)), sublist))
+ escaper(force_text(title)), sublist))
i += 1
return '\n'.join(output)
value, converted = convert_old_style_list(value)
@@ -901,4 +901,4 @@ def pprint(value):
try:
return pformat(value)
except Exception as e:
- return "Error in formatting: %s" % force_unicode(e, errors="replace")
+ return "Error in formatting: %s" % force_text(e, errors="replace")
diff --git a/django/template/defaulttags.py b/django/template/defaulttags.py
index fb45fe722e..14391f08e1 100644
--- a/django/template/defaulttags.py
+++ b/django/template/defaulttags.py
@@ -14,9 +14,10 @@ from django.template.base import (Node, NodeList, Template, Context, Library,
VARIABLE_ATTRIBUTE_SEPARATOR, get_library, token_kwargs, kwarg_re)
from django.template.smartif import IfParser, Literal
from django.template.defaultfilters import date
-from django.utils.encoding import smart_unicode
+from django.utils.encoding import smart_text
from django.utils.safestring import mark_safe
from django.utils.html import format_html
+from django.utils import six
from django.utils import timezone
register = Library()
@@ -103,7 +104,7 @@ class FirstOfNode(Node):
for var in self.vars:
value = var.resolve(context, True)
if value:
- return smart_unicode(value)
+ return smart_text(value)
return ''
class ForNode(Node):
@@ -392,7 +393,7 @@ class URLNode(Node):
def render(self, context):
from django.core.urlresolvers import reverse, NoReverseMatch
args = [arg.resolve(context) for arg in self.args]
- kwargs = dict([(smart_unicode(k, 'ascii'), v.resolve(context))
+ kwargs = dict([(smart_text(k, 'ascii'), v.resolve(context))
for k, v in self.kwargs.items()])
view_name = self.view_name.resolve(context)
@@ -473,7 +474,7 @@ class WithNode(Node):
def render(self, context):
values = dict([(key, val.resolve(context)) for key, val in
- self.extra_context.iteritems()])
+ six.iteritems(self.extra_context)])
context.update(values)
output = self.nodelist.render(context)
context.pop()
@@ -1188,7 +1189,7 @@ def templatetag(parser, token):
if tag not in TemplateTagNode.mapping:
raise TemplateSyntaxError("Invalid templatetag argument: '%s'."
" Must be one of: %s" %
- (tag, TemplateTagNode.mapping.keys()))
+ (tag, list(TemplateTagNode.mapping)))
return TemplateTagNode(tag)
@register.tag
diff --git a/django/template/loader_tags.py b/django/template/loader_tags.py
index b63938abb0..d295d058d0 100644
--- a/django/template/loader_tags.py
+++ b/django/template/loader_tags.py
@@ -3,6 +3,7 @@ from django.template.base import TemplateSyntaxError, Library, Node, TextNode,\
token_kwargs, Variable
from django.template.loader import get_template
from django.utils.safestring import mark_safe
+from django.utils import six
register = Library()
@@ -17,7 +18,7 @@ class BlockContext(object):
self.blocks = {}
def add_blocks(self, blocks):
- for name, block in blocks.iteritems():
+ for name, block in six.iteritems(blocks):
if name in self.blocks:
self.blocks[name].insert(0, block)
else:
@@ -130,7 +131,7 @@ class BaseIncludeNode(Node):
def render_template(self, template, context):
values = dict([(name, var.resolve(context)) for name, var
- in self.extra_context.iteritems()])
+ in six.iteritems(self.extra_context)])
if self.isolated_context:
return template.render(context.new(values))
context.update(values)
diff --git a/django/template/loaders/app_directories.py b/django/template/loaders/app_directories.py
index 6e0f079de7..887f8a0b72 100644
--- a/django/template/loaders/app_directories.py
+++ b/django/template/loaders/app_directories.py
@@ -12,9 +12,11 @@ from django.template.base import TemplateDoesNotExist
from django.template.loader import BaseLoader
from django.utils._os import safe_join
from django.utils.importlib import import_module
+from django.utils import six
# At compile time, cache the directories to search.
-fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
+if not six.PY3:
+ fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
app_template_dirs = []
for app in settings.INSTALLED_APPS:
try:
@@ -23,7 +25,9 @@ for app in settings.INSTALLED_APPS:
raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))
template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')
if os.path.isdir(template_dir):
- app_template_dirs.append(template_dir.decode(fs_encoding))
+ if not six.PY3:
+ template_dir = template_dir.decode(fs_encoding)
+ app_template_dirs.append(template_dir)
# It won't change, so convert it to a tuple to save memory.
app_template_dirs = tuple(app_template_dirs)