From 9114fe8adabe626619665c9853ba952798da5530 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Sat, 5 Sep 2015 10:25:43 -0400 Subject: [PATCH] Removed support for passing a context to a generic Template.render(). Per deprecation timeline; refs a3e783fe11dd25bbf84bfb6201186566ed473506. --- django/template/backends/django.py | 34 ++------------------------ tests/shortcuts/tests.py | 13 +--------- tests/template_backends/test_django.py | 21 +--------------- tests/template_tests/test_response.py | 6 ----- 4 files changed, 4 insertions(+), 70 deletions(-) diff --git a/django/template/backends/django.py b/django/template/backends/django.py index e016b187492..af58f60b2a2 100644 --- a/django/template/backends/django.py +++ b/django/template/backends/django.py @@ -2,18 +2,16 @@ from __future__ import absolute_import import sys -import warnings from importlib import import_module from pkgutil import walk_packages from django.apps import apps from django.conf import settings from django.template import TemplateDoesNotExist -from django.template.context import Context, RequestContext, make_context +from django.template.context import make_context from django.template.engine import Engine from django.template.library import InvalidTemplateLibrary from django.utils import six -from django.utils.deprecation import RemovedInDjango110Warning from .base import BaseEngine @@ -62,35 +60,7 @@ class Template(object): return self.template.origin def render(self, context=None, request=None): - # A deprecation path is required here to cover the following usage: - # >>> from django.template import Context - # >>> from django.template.loader import get_template - # >>> template = get_template('hello.html') - # >>> template.render(Context({'name': 'world'})) - # In Django 1.7 get_template() returned a django.template.Template. - # In Django 1.8 it returns a django.template.backends.django.Template. - # In Django 1.10 the isinstance checks should be removed. If passing a - # Context or a RequestContext works by accident, it won't be an issue - # per se, but it won't be officially supported either. - if isinstance(context, RequestContext): - if request is not None and request is not context.request: - raise ValueError( - "render() was called with a RequestContext and a request " - "argument which refer to different requests. Make sure " - "that the context argument is a dict or at least that " - "the two arguments refer to the same request.") - warnings.warn( - "render() must be called with a dict, not a RequestContext.", - RemovedInDjango110Warning, stacklevel=2) - - elif isinstance(context, Context): - warnings.warn( - "render() must be called with a dict, not a Context.", - RemovedInDjango110Warning, stacklevel=2) - - else: - context = make_context(context, request) - + context = make_context(context, request) try: return self.template.render(context) except TemplateDoesNotExist as exc: diff --git a/tests/shortcuts/tests.py b/tests/shortcuts/tests.py index 9712858c700..ec792264467 100644 --- a/tests/shortcuts/tests.py +++ b/tests/shortcuts/tests.py @@ -1,6 +1,5 @@ -from django.test import SimpleTestCase, ignore_warnings, override_settings +from django.test import SimpleTestCase, override_settings from django.test.utils import require_jinja2 -from django.utils.deprecation import RemovedInDjango110Warning @override_settings( @@ -39,16 +38,6 @@ class ShortcutTests(SimpleTestCase): response = self.client.get('/render_to_response/using/?using=jinja2') self.assertEqual(response.content, b'Jinja2\n') - @ignore_warnings(category=RemovedInDjango110Warning) - def test_render_to_response_with_context_instance_misuse(self): - """ - For backwards-compatibility, ensure that it's possible to pass a - RequestContext instance in the dictionary argument instead of the - context_instance argument. - """ - response = self.client.get('/render_to_response/context_instance_misuse/') - self.assertContains(response, 'context processor output') - def test_render(self): response = self.client.get('/render/') self.assertEqual(response.status_code, 200) diff --git a/tests/template_backends/test_django.py b/tests/template_backends/test_django.py index 332eeaee25d..8d13aaee08b 100644 --- a/tests/template_backends/test_django.py +++ b/tests/template_backends/test_django.py @@ -1,10 +1,8 @@ from template_tests.test_response import test_processor_name -from django.template import RequestContext from django.template.backends.django import DjangoTemplates from django.template.library import InvalidTemplateLibrary -from django.test import RequestFactory, ignore_warnings, override_settings -from django.utils.deprecation import RemovedInDjango110Warning +from django.test import RequestFactory, override_settings from .test_dummy import TemplateStringsTests @@ -36,23 +34,6 @@ class DjangoTemplatesTests(TemplateStringsTests): content = template.render({'processors': 'no'}, request) self.assertEqual(content, 'no') - @ignore_warnings(category=RemovedInDjango110Warning) - def test_request_context_conflicts_with_request(self): - template = self.engine.from_string('hello') - - request = RequestFactory().get('/') - request_context = RequestContext(request) - # This doesn't raise an exception. - template.render(request_context, request) - - other_request = RequestFactory().get('/') - msg = ("render() was called with a RequestContext and a request " - "argument which refer to different requests. Make sure " - "that the context argument is a dict or at least that " - "the two arguments refer to the same request.") - with self.assertRaisesMessage(ValueError, msg): - template.render(request_context, other_request) - @override_settings(INSTALLED_APPS=['template_backends.apps.good']) def test_templatetag_discovery(self): engine = DjangoTemplates({ diff --git a/tests/template_tests/test_response.py b/tests/template_tests/test_response.py index 8fea389f533..debc01dfe25 100644 --- a/tests/template_tests/test_response.py +++ b/tests/template_tests/test_response.py @@ -248,12 +248,6 @@ class TemplateResponseTest(SimpleTestCase): {'foo': 'bar'}).render() self.assertEqual(response.content, b'baryes') - @ignore_warnings(category=RemovedInDjango110Warning) - def test_render_with_context(self): - response = self._response('{{ foo }}{{ processors }}', - Context({'foo': 'bar'})).render() - self.assertEqual(response.content, b'bar') - def test_context_processor_priority(self): # context processors should be overridden by passed-in context response = self._response('{{ foo }}{{ processors }}',