Commit 57039f96 authored by Tim Graham's avatar Tim Graham
Browse files

Refs #22306 -- Removed cycle/firstof template tags from "future".

Per deprecation timeline.
parent c64dd646
Loading
Loading
Loading
Loading

django/templatetags/future.py

deleted100644 → 0
+0 −66
Original line number Diff line number Diff line
import warnings

from django.template import Library, defaulttags
from django.utils.deprecation import RemovedInDjango110Warning

register = Library()


@register.tag
def cycle(parser, token):
    """
    This is the future version of `cycle` with auto-escaping.
    The deprecation is now complete and this version is no different
    from the non-future version so this is deprecated.

    By default all strings are escaped.

    If you want to disable auto-escaping of variables you can use::

        {% autoescape off %}
            {% cycle var1 var2 var3 as somecycle %}
        {% autoescape %}

    Or if only some variables should be escaped, you can use::

        {% cycle var1 var2|safe var3|safe  as somecycle %}
    """
    warnings.warn(
        "Loading the `cycle` tag from the `future` library is deprecated and "
        "will be removed in Django 1.10. Use the default `cycle` tag instead.",
        RemovedInDjango110Warning)
    return defaulttags.cycle(parser, token)


@register.tag
def firstof(parser, token):
    """
    This is the future version of `firstof` with auto-escaping.
    The deprecation is now complete and this version is no different
    from the non-future version so this is deprecated.

    This is equivalent to::

        {% if var1 %}
            {{ var1 }}
        {% elif var2 %}
            {{ var2 }}
        {% elif var3 %}
            {{ var3 }}
        {% endif %}

    If you want to disable auto-escaping of variables you can use::

        {% autoescape off %}
            {% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
        {% autoescape %}

    Or if only some variables should be escaped, you can use::

        {% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}
    """
    warnings.warn(
        "Loading the `firstof` tag from the `future` library is deprecated and "
        "will be removed in Django 1.10. Use the default `firstof` tag instead.",
        RemovedInDjango110Warning)
    return defaulttags.firstof(parser, token)
+3 −8
Original line number Diff line number Diff line
@@ -6,7 +6,6 @@ from ..utils import setup


class CycleTagTests(SimpleTestCase):
    libraries = {'future': 'django.templatetags.future'}

    @setup({'cycle01': '{% cycle a %}'})
    def test_cycle01(self):
@@ -146,21 +145,17 @@ class CycleTagTests(SimpleTestCase):
        output = self.engine.render_to_string('cycle25', {'a': '<'})
        self.assertEqual(output, '&lt;')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'cycle26': '{% load cycle from future %}{% cycle a b as ab %}{% cycle ab %}'})
    @setup({'cycle26': '{% cycle a b as ab %}{% cycle ab %}'})
    def test_cycle26(self):
        output = self.engine.render_to_string('cycle26', {'a': '<', 'b': '>'})
        self.assertEqual(output, '&lt;&gt;')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'cycle27': '{% load cycle from future %}'
                       '{% autoescape off %}{% cycle a b as ab %}{% cycle ab %}{% endautoescape %}'})
    @setup({'cycle27': '{% autoescape off %}{% cycle a b as ab %}{% cycle ab %}{% endautoescape %}'})
    def test_cycle27(self):
        output = self.engine.render_to_string('cycle27', {'a': '<', 'b': '>'})
        self.assertEqual(output, '<>')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'cycle28': '{% load cycle from future %}{% cycle a|safe b as ab %}{% cycle ab %}'})
    @setup({'cycle28': '{% cycle a|safe b as ab %}{% cycle ab %}'})
    def test_cycle28(self):
        output = self.engine.render_to_string('cycle28', {'a': '<', 'b': '>'})
        self.assertEqual(output, '<&gt;')
+5 −12
Original line number Diff line number Diff line
from django.template import TemplateSyntaxError
from django.test import SimpleTestCase, ignore_warnings
from django.utils.deprecation import RemovedInDjango110Warning
from django.test import SimpleTestCase

from ..utils import setup


class FirstOfTagTests(SimpleTestCase):
    libraries = {'future': 'django.templatetags.future'}

    @setup({'firstof01': '{% firstof a b c %}'})
    def test_firstof01(self):
@@ -58,27 +56,22 @@ class FirstOfTagTests(SimpleTestCase):
        output = self.engine.render_to_string('firstof10', {'a': '<'})
        self.assertEqual(output, '&lt;')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'firstof11': '{% load firstof from future %}{% firstof a b %}'})
    @setup({'firstof11': '{% firstof a b %}'})
    def test_firstof11(self):
        output = self.engine.render_to_string('firstof11', {'a': '<', 'b': '>'})
        self.assertEqual(output, '&lt;')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'firstof12': '{% load firstof from future %}{% firstof a b %}'})
    @setup({'firstof12': '{% firstof a b %}'})
    def test_firstof12(self):
        output = self.engine.render_to_string('firstof12', {'a': '', 'b': '>'})
        self.assertEqual(output, '&gt;')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'firstof13': '{% load firstof from future %}'
                         '{% autoescape off %}{% firstof a %}{% endautoescape %}'})
    @setup({'firstof13': '{% autoescape off %}{% firstof a %}{% endautoescape %}'})
    def test_firstof13(self):
        output = self.engine.render_to_string('firstof13', {'a': '<'})
        self.assertEqual(output, '<')

    @ignore_warnings(category=RemovedInDjango110Warning)
    @setup({'firstof14': '{% load firstof from future %}{% firstof a|safe b %}'})
    @setup({'firstof14': '{% firstof a|safe b %}'})
    def test_firstof14(self):
        output = self.engine.render_to_string('firstof14', {'a': '<'})
        self.assertEqual(output, '<')