summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaap Roes <jaap@eight.nl>2014-08-11 09:51:52 +0200
committerTim Graham <timograham@gmail.com>2014-08-11 07:04:33 -0400
commite92b057e06b41eb05930637119e83ed3acd3d324 (patch)
tree9966e66c8b7c8148cfa0cb3937a45c7be61c4854
parent2e7be92b4df29ac851d570e57da5dcf756c5ac52 (diff)
Fixed #23261 -- Deprecated old style list support for unordered_list filter.
-rw-r--r--django/template/defaultfilters.py7
-rw-r--r--docs/internals/deprecation.txt2
-rw-r--r--docs/ref/templates/builtins.txt7
-rw-r--r--docs/releases/1.8.txt12
-rw-r--r--tests/defaultfilters/tests.py26
-rw-r--r--tests/template_tests/tests.py2
6 files changed, 43 insertions, 13 deletions
diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
index c5839197df..f63f11a057 100644
--- a/django/template/defaultfilters.py
+++ b/django/template/defaultfilters.py
@@ -6,11 +6,13 @@ import random as random_module
from decimal import Decimal, InvalidOperation, Context, ROUND_HALF_UP
from functools import wraps
from pprint import pformat
+import warnings
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.deprecation import RemovedInDjango20Warning
from django.utils.encoding import force_text, iri_to_uri
from django.utils.html import (conditional_escape, escapejs,
escape, urlize as _urlize, linebreaks, strip_tags, avoid_wrapping,
@@ -705,6 +707,11 @@ def unordered_list(value, autoescape=None):
i += 1
return '\n'.join(output)
value, converted = convert_old_style_list(value)
+ if converted:
+ warnings.warn(
+ "The old style syntax in `unordered_list` is deprecated and will "
+ "be removed in Django 2.0. Use the the new format instead.",
+ RemovedInDjango20Warning)
return mark_safe(_helper(value))
diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt
index 31ec014335..2adf9cd199 100644
--- a/docs/internals/deprecation.txt
+++ b/docs/internals/deprecation.txt
@@ -42,6 +42,8 @@ about each item can often be found in the release notes of two versions prior.
* The ``error_message`` argument of ``django.forms.RegexField`` will be removed.
+* The ``unordered_list`` filter will no longer support old style lists.
+
.. _deprecation-removed-in-1.9:
1.9
diff --git a/docs/ref/templates/builtins.txt b/docs/ref/templates/builtins.txt
index 242f2c2c9a..c24da54e67 100644
--- a/docs/ref/templates/builtins.txt
+++ b/docs/ref/templates/builtins.txt
@@ -2259,8 +2259,11 @@ contains ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``, then
</ul>
</li>
-Note: An older, more restrictive and verbose input format is also supported:
-``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``,
+.. deprecated:: 1.8
+
+ An older, more restrictive and verbose input format is also supported:
+ ``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``.
+ Support for this syntax will be removed in Django 2.0.
.. templatefilter:: upper
diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt
index 9634b04db4..8fa719c82e 100644
--- a/docs/releases/1.8.txt
+++ b/docs/releases/1.8.txt
@@ -636,3 +636,15 @@ built-in tags. Simply remove ``'django.contrib.webdesign'`` from
It provided backwards compatibility for pre-1.0 code, but its functionality is
redundant. Use ``Field.error_messages['invalid']`` instead.
+
+Old :tfilter:`unordered_list` syntax
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+An older (pre-1.0), more restrictive and verbose input format for the
+:tfilter:`unordered_list` template filter has been deprecated::
+
+ ``['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]]``
+
+Using the new syntax, this becomes::
+
+ ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``
diff --git a/tests/defaultfilters/tests.py b/tests/defaultfilters/tests.py
index 22dc04666e..c9aa79cdb5 100644
--- a/tests/defaultfilters/tests.py
+++ b/tests/defaultfilters/tests.py
@@ -4,6 +4,7 @@ from __future__ import unicode_literals
import datetime
import decimal
import unittest
+import warnings
from django.template.defaultfilters import (
add, addslashes, capfirst, center, cut, date, default, default_if_none,
@@ -549,20 +550,23 @@ class DefaultFiltersTests(TestCase):
self.assertEqual(unordered_list([a, b]), '\t<li>ulitem-a</li>\n\t<li>ulitem-b</li>')
# Old format for unordered lists should still work
- self.assertEqual(unordered_list(['item 1', []]), '\t<li>item 1</li>')
+ with warnings.catch_warnings(record=True):
+ warnings.simplefilter("always")
- self.assertEqual(unordered_list(['item 1', [['item 1.1', []]]]),
- '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t</ul>\n\t</li>')
+ self.assertEqual(unordered_list(['item 1', []]), '\t<li>item 1</li>')
+
+ self.assertEqual(unordered_list(['item 1', [['item 1.1', []]]]),
+ '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1</li>\n\t</ul>\n\t</li>')
- self.assertEqual(unordered_list(['item 1', [['item 1.1', []],
- ['item 1.2', []]]]), '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1'
- '</li>\n\t\t<li>item 1.2</li>\n\t</ul>\n\t</li>')
+ self.assertEqual(unordered_list(['item 1', [['item 1.1', []],
+ ['item 1.2', []]]]), '\t<li>item 1\n\t<ul>\n\t\t<li>item 1.1'
+ '</li>\n\t\t<li>item 1.2</li>\n\t</ul>\n\t</li>')
- self.assertEqual(unordered_list(['States', [['Kansas', [['Lawrence',
- []], ['Topeka', []]]], ['Illinois', []]]]), '\t<li>States\n\t'
- '<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>Lawrence</li>'
- '\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>\n\t\t<li>'
- 'Illinois</li>\n\t</ul>\n\t</li>')
+ self.assertEqual(unordered_list(['States', [['Kansas', [['Lawrence',
+ []], ['Topeka', []]]], ['Illinois', []]]]), '\t<li>States\n\t'
+ '<ul>\n\t\t<li>Kansas\n\t\t<ul>\n\t\t\t<li>Lawrence</li>'
+ '\n\t\t\t<li>Topeka</li>\n\t\t</ul>\n\t\t</li>\n\t\t<li>'
+ 'Illinois</li>\n\t</ul>\n\t</li>')
def test_add(self):
self.assertEqual(add('1', '2'), 3)
diff --git a/tests/template_tests/tests.py b/tests/template_tests/tests.py
index d5ee85fce2..c24040ebfe 100644
--- a/tests/template_tests/tests.py
+++ b/tests/template_tests/tests.py
@@ -590,6 +590,8 @@ class TemplateTests(TestCase):
# Ignore deprecations of using the wrong number of variables with the 'for' tag.
# and warnings for {% url %} reversing by dotted path
warnings.filterwarnings("ignore", category=RemovedInDjango20Warning, module="django.template.defaulttags")
+ # Ignore deprecations of old style unordered_list.
+ warnings.filterwarnings("ignore", category=RemovedInDjango20Warning, module="django.template.defaultfilters")
output = self.render(test_template, vals)
except ShouldNotExecuteException:
failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template rendering invoked method that shouldn't have been invoked." % (is_cached, invalid_str, template_debug, name))