Fixed #22306 -- Deprecated future versions of cycle and firstof template tags.
This commit is contained in:
parent
12e9adcd71
commit
5e4e0b6fe9
1
AUTHORS
1
AUTHORS
|
@ -633,6 +633,7 @@ answer newbie questions, and generally made Django that much better:
|
||||||
tt@gurgle.no
|
tt@gurgle.no
|
||||||
David Tulig <david.tulig@gmail.com>
|
David Tulig <david.tulig@gmail.com>
|
||||||
Justine Tunney <jtunney@lobstertech.com>
|
Justine Tunney <jtunney@lobstertech.com>
|
||||||
|
Maxime Turcotte <maxocub@riseup.net>
|
||||||
Amit Upadhyay <http://www.amitu.com/blog/>
|
Amit Upadhyay <http://www.amitu.com/blog/>
|
||||||
Adam Vandenberg
|
Adam Vandenberg
|
||||||
Geert Vanderkelen
|
Geert Vanderkelen
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{% load admin_static %}{% load firstof from future %}<!DOCTYPE html>
|
{% load admin_static %}<!DOCTYPE html>
|
||||||
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
|
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
|
||||||
<head>
|
<head>
|
||||||
<title>{% block title %}{% endblock %}</title>
|
<title>{% block title %}{% endblock %}</title>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{% load i18n admin_static %}{% load cycle from future %}
|
{% load i18n admin_static %}
|
||||||
{% if result_hidden_fields %}
|
{% if result_hidden_fields %}
|
||||||
<div class="hiddenfields">{# DIV for HTML validation #}
|
<div class="hiddenfields">{# DIV for HTML validation #}
|
||||||
{% for item in result_hidden_fields %}{{ item }}{% endfor %}
|
{% for item in result_hidden_fields %}{{ item }}{% endfor %}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{% load i18n admin_static admin_modify %}{% load cycle from future %}
|
{% load i18n admin_static admin_modify %}
|
||||||
<div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
|
<div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
|
||||||
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
|
<div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
|
||||||
{{ inline_admin_formset.formset.management_form }}
|
{{ inline_admin_formset.formset.management_form }}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% extends "admin/base_site.html" %}
|
{% extends "admin/base_site.html" %}
|
||||||
{% load i18n %}{% load firstof from future %}
|
{% load i18n %}
|
||||||
|
|
||||||
{% block coltype %}colSM{% endblock %}
|
{% block coltype %}colSM{% endblock %}
|
||||||
{% block breadcrumbs %}
|
{% block breadcrumbs %}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% extends "admin/base_site.html" %}
|
{% extends "admin/base_site.html" %}
|
||||||
{% load i18n %}{% load firstof from future %}
|
{% load i18n %}
|
||||||
|
|
||||||
{% block coltype %}colSM{% endblock %}
|
{% block coltype %}colSM{% endblock %}
|
||||||
{% block breadcrumbs %}
|
{% block breadcrumbs %}
|
||||||
|
|
|
@ -2,7 +2,7 @@ import warnings
|
||||||
|
|
||||||
from django.template import Library
|
from django.template import Library
|
||||||
from django.template import defaulttags
|
from django.template import defaulttags
|
||||||
from django.utils.deprecation import RemovedInDjango19Warning
|
from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning
|
||||||
|
|
||||||
register = Library()
|
register = Library()
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ def cycle(parser, token):
|
||||||
"""
|
"""
|
||||||
This is the future version of `cycle` with auto-escaping.
|
This is the future version of `cycle` with auto-escaping.
|
||||||
The deprecation is now complete and this version is no different
|
The deprecation is now complete and this version is no different
|
||||||
from the non-future version so this can be deprecated (#22306)
|
from the non-future version so this is deprecated.
|
||||||
|
|
||||||
By default all strings are escaped.
|
By default all strings are escaped.
|
||||||
|
|
||||||
|
@ -44,6 +44,10 @@ def cycle(parser, token):
|
||||||
|
|
||||||
{% cycle var1 var2|safe var3|safe as somecycle %}
|
{% 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 2.0. Use the default `cycle` tag instead.",
|
||||||
|
RemovedInDjango20Warning)
|
||||||
return defaulttags.cycle(parser, token)
|
return defaulttags.cycle(parser, token)
|
||||||
|
|
||||||
|
|
||||||
|
@ -52,7 +56,7 @@ def firstof(parser, token):
|
||||||
"""
|
"""
|
||||||
This is the future version of `firstof` with auto-escaping.
|
This is the future version of `firstof` with auto-escaping.
|
||||||
The deprecation is now complete and this version is no different
|
The deprecation is now complete and this version is no different
|
||||||
from the non-future version so this can be deprecated (#22306)
|
from the non-future version so this is deprecated.
|
||||||
|
|
||||||
This is equivalent to::
|
This is equivalent to::
|
||||||
|
|
||||||
|
@ -75,4 +79,8 @@ def firstof(parser, token):
|
||||||
{% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}
|
{% 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 2.0. Use the default `firstof` tag instead.",
|
||||||
|
RemovedInDjango20Warning)
|
||||||
return defaulttags.firstof(parser, token)
|
return defaulttags.firstof(parser, token)
|
||||||
|
|
|
@ -984,7 +984,7 @@ Exception Value: {{ exception_value|force_escape }}
|
||||||
</html>
|
</html>
|
||||||
"""
|
"""
|
||||||
|
|
||||||
TECHNICAL_500_TEXT_TEMPLATE = """{% load firstof from future %}{% firstof exception_type 'Report' %}{% if request %} at {{ request.path_info }}{% endif %}
|
TECHNICAL_500_TEXT_TEMPLATE = """{% firstof exception_type 'Report' %}{% if request %} at {{ request.path_info }}{% endif %}
|
||||||
{% firstof exception_value 'No exception message supplied' %}
|
{% firstof exception_value 'No exception message supplied' %}
|
||||||
{% if request %}
|
{% if request %}
|
||||||
Request Method: {{ request.META.REQUEST_METHOD }}
|
Request Method: {{ request.META.REQUEST_METHOD }}
|
||||||
|
|
|
@ -12,6 +12,9 @@ about each item can often be found in the release notes of two versions prior.
|
||||||
2.0
|
2.0
|
||||||
---
|
---
|
||||||
|
|
||||||
|
* ``cycle`` and ``firstof`` template tags will be removed from the ``future``
|
||||||
|
template tag library (used during the 1.6/1.7 deprecation period).
|
||||||
|
|
||||||
.. _deprecation-removed-in-1.9:
|
.. _deprecation-removed-in-1.9:
|
||||||
|
|
||||||
1.9
|
1.9
|
||||||
|
|
|
@ -180,4 +180,11 @@ Miscellaneous
|
||||||
Features deprecated in 1.8
|
Features deprecated in 1.8
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
...
|
Loading ``cycle`` and ``firstof`` template tags from ``future`` library
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Django 1.6 introduced ``{% load cycle from future %}`` and
|
||||||
|
``{% load firstof from future %}`` syntax for forward compatibility of the
|
||||||
|
:ttag:`cycle` and :ttag:`firstof` template tags. This syntax is now deprecated
|
||||||
|
and will be removed in Django 2.0. You can simply remove the
|
||||||
|
``{% load ... from future %}`` tags.
|
||||||
|
|
|
@ -17,7 +17,7 @@ from django.template.loaders import app_directories, filesystem, cached
|
||||||
from django.test import RequestFactory, TestCase
|
from django.test import RequestFactory, TestCase
|
||||||
from django.test.utils import (setup_test_template_loader,
|
from django.test.utils import (setup_test_template_loader,
|
||||||
restore_template_loaders, override_settings, extend_sys_path)
|
restore_template_loaders, override_settings, extend_sys_path)
|
||||||
from django.utils.deprecation import RemovedInDjango19Warning
|
from django.utils.deprecation import RemovedInDjango19Warning, RemovedInDjango20Warning
|
||||||
from django.utils.encoding import python_2_unicode_compatible
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
from django.utils.formats import date_format
|
from django.utils.formats import date_format
|
||||||
from django.utils._os import upath
|
from django.utils._os import upath
|
||||||
|
@ -511,7 +511,7 @@ class TemplateRegressionTests(TestCase):
|
||||||
def test_ifchanged_render_once(self):
|
def test_ifchanged_render_once(self):
|
||||||
""" Test for ticket #19890. The content of ifchanged template tag was
|
""" Test for ticket #19890. The content of ifchanged template tag was
|
||||||
rendered twice."""
|
rendered twice."""
|
||||||
template = Template('{% load cycle from future %}{% ifchanged %}{% cycle "1st time" "2nd time" %}{% endifchanged %}')
|
template = Template('{% ifchanged %}{% cycle "1st time" "2nd time" %}{% endifchanged %}')
|
||||||
output = template.render(Context({}))
|
output = template.render(Context({}))
|
||||||
self.assertEqual(output, '1st time')
|
self.assertEqual(output, '1st time')
|
||||||
|
|
||||||
|
@ -595,6 +595,8 @@ class TemplateTests(TestCase):
|
||||||
with warnings.catch_warnings():
|
with warnings.catch_warnings():
|
||||||
# Ignore pending deprecations of loading 'ssi' and 'url' tags from future.
|
# Ignore pending deprecations of loading 'ssi' and 'url' tags from future.
|
||||||
warnings.filterwarnings("ignore", category=RemovedInDjango19Warning, module='django.templatetags.future')
|
warnings.filterwarnings("ignore", category=RemovedInDjango19Warning, module='django.templatetags.future')
|
||||||
|
# Ignore deprecations of loading 'cycle' and 'firstof' tags from future.
|
||||||
|
warnings.filterwarnings("ignore", category=RemovedInDjango20Warning, module="django.templatetags.future")
|
||||||
test_template = loader.get_template(name)
|
test_template = loader.get_template(name)
|
||||||
except ShouldNotExecuteException:
|
except ShouldNotExecuteException:
|
||||||
failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template loading invoked method that shouldn't have been invoked." % (is_cached, invalid_str, template_debug, name))
|
failures.append("Template test (Cached='%s', TEMPLATE_STRING_IF_INVALID='%s', TEMPLATE_DEBUG=%s): %s -- FAILED. Template loading invoked method that shouldn't have been invoked." % (is_cached, invalid_str, template_debug, name))
|
||||||
|
|
Loading…
Reference in New Issue