summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2014-11-18 11:57:05 -0500
committerTim Graham <timograham@gmail.com>2015-01-17 08:05:18 -0500
commit75f107b8842dfc890ddd65262bd09ca87c3a15be (patch)
treea1e30fc3d82e3a1f281caccd078108daea93c7b5
parent61ad1ea92b1f4df992b0ef1dcc7c781da2413815 (diff)
Removed request.REQUEST per deprecation timeline; refs #18659.
-rw-r--r--django/core/handlers/wsgi.py11
-rw-r--r--docs/ref/request-response.txt15
-rw-r--r--docs/topics/http/middleware.txt11
-rw-r--r--tests/deprecation/tests.py22
-rw-r--r--tests/test_client_regress/tests.py15
-rw-r--r--tests/test_client_regress/views.py6
6 files changed, 6 insertions, 74 deletions
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
index b4402686c0..7c94758e86 100644
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -6,15 +6,12 @@ import logging
import sys
from io import BytesIO
from threading import Lock
-import warnings
from django import http
from django.conf import settings
from django.core import signals
from django.core.handlers import base
from django.core.urlresolvers import set_script_prefix
-from django.utils import datastructures
-from django.utils.deprecation import RemovedInDjango19Warning
from django.utils.encoding import force_str, force_text
from django.utils.functional import cached_property
from django.utils import six
@@ -121,13 +118,6 @@ class WSGIRequest(http.HttpRequest):
def _get_scheme(self):
return self.environ.get('wsgi.url_scheme')
- def _get_request(self):
- warnings.warn('`request.REQUEST` is deprecated, use `request.GET` or '
- '`request.POST` instead.', RemovedInDjango19Warning, 2)
- if not hasattr(self, '_request'):
- self._request = datastructures.MergeDict(self.POST, self.GET)
- return self._request
-
@cached_property
def GET(self):
# The WSGI spec says 'QUERY_STRING' may be absent.
@@ -154,7 +144,6 @@ class WSGIRequest(http.HttpRequest):
POST = property(_get_post, _set_post)
FILES = property(_get_files)
- REQUEST = property(_get_request)
class WSGIHandler(base.BaseHandler):
diff --git a/docs/ref/request-response.txt b/docs/ref/request-response.txt
index 1375ba10e5..41e6d3dcdc 100644
--- a/docs/ref/request-response.txt
+++ b/docs/ref/request-response.txt
@@ -108,21 +108,6 @@ All attributes should be considered read-only, unless stated otherwise below.
Note: ``POST`` does *not* include file-upload information. See ``FILES``.
-.. attribute:: HttpRequest.REQUEST
-
- .. deprecated:: 1.7
- Use the more explicit ``GET`` and ``POST`` instead.
-
- For convenience, a dictionary-like object that searches ``POST`` first,
- then ``GET``. Inspired by PHP's ``$_REQUEST``.
-
- For example, if ``GET = {"name": "john"}`` and ``POST = {"age": '34'}``,
- ``REQUEST["name"]`` would be ``"john"``, and ``REQUEST["age"]`` would be
- ``"34"``.
-
- It's strongly suggested that you use ``GET`` and ``POST`` instead of
- ``REQUEST``, because the former are more explicit.
-
.. attribute:: HttpRequest.COOKIES
A standard Python dictionary containing all cookies. Keys and values are
diff --git a/docs/topics/http/middleware.txt b/docs/topics/http/middleware.txt
index cc7607da0a..7e1e01dd87 100644
--- a/docs/topics/http/middleware.txt
+++ b/docs/topics/http/middleware.txt
@@ -130,12 +130,11 @@ view; it'll apply response middleware to that
.. note::
- Accessing :attr:`request.POST <django.http.HttpRequest.POST>` or
- :attr:`request.REQUEST <django.http.HttpRequest.REQUEST>` inside middleware
- from ``process_request`` or ``process_view`` will prevent any view running
- after the middleware from being able to :ref:`modify the upload handlers
- for the request <modifying_upload_handlers_on_the_fly>`, and should
- normally be avoided.
+ Accessing :attr:`request.POST <django.http.HttpRequest.POST>` inside
+ middleware from ``process_request`` or ``process_view`` will prevent any
+ view running after the middleware from being able to :ref:`modify the
+ upload handlers for the request <modifying_upload_handlers_on_the_fly>`,
+ and should normally be avoided.
The :class:`~django.middleware.csrf.CsrfViewMiddleware` class can be
considered an exception, as it provides the
diff --git a/tests/deprecation/tests.py b/tests/deprecation/tests.py
index cae03a8424..2d9a9beb69 100644
--- a/tests/deprecation/tests.py
+++ b/tests/deprecation/tests.py
@@ -4,7 +4,7 @@ import os
import unittest
import warnings
-from django.test import SimpleTestCase, RequestFactory, override_settings
+from django.test import SimpleTestCase, override_settings
from django.test.utils import reset_warning_registry
from django.utils import six, translation
from django.utils.deprecation import RenameMethodsBase
@@ -175,26 +175,6 @@ class RenameMethodsTests(SimpleTestCase):
])
-class DeprecatingRequestMergeDictTest(SimpleTestCase):
- def test_deprecated_request(self):
- """
- Ensure the correct warning is raised when WSGIRequest.REQUEST is
- accessed.
- """
- reset_warning_registry()
- with warnings.catch_warnings(record=True) as recorded:
- warnings.simplefilter('always')
- request = RequestFactory().get('/')
- request.REQUEST # evaluate
-
- msgs = [str(warning.message) for warning in recorded]
- self.assertEqual(msgs, [
- '`request.REQUEST` is deprecated, use `request.GET` or '
- '`request.POST` instead.',
- '`MergeDict` is deprecated, use `dict.update()` instead.',
- ])
-
-
@override_settings(USE_I18N=True)
class DeprecatedChineseLanguageCodes(SimpleTestCase):
def test_deprecation_warning(self):
diff --git a/tests/test_client_regress/tests.py b/tests/test_client_regress/tests.py
index e17bf4ef81..1ae9457300 100644
--- a/tests/test_client_regress/tests.py
+++ b/tests/test_client_regress/tests.py
@@ -953,14 +953,12 @@ class zzUrlconfSubstitutionTests(TestCase):
class ContextTests(TestCase):
fixtures = ['testdata']
- @ignore_warnings(category=RemovedInDjango19Warning) # `request.REQUEST` is deprecated
def test_single_context(self):
"Context variables can be retrieved from a single context"
response = self.client.get("/request_data/", data={'foo': 'whiz'})
self.assertEqual(response.context.__class__, Context)
self.assertIn('get-foo', response.context)
self.assertEqual(response.context['get-foo'], 'whiz')
- self.assertEqual(response.context['request-foo'], 'whiz')
self.assertEqual(response.context['data'], 'sausage')
try:
@@ -969,7 +967,6 @@ class ContextTests(TestCase):
except KeyError as e:
self.assertEqual(e.args[0], 'does-not-exist')
- @ignore_warnings(category=RemovedInDjango19Warning) # `request.REQUEST` is deprecated
def test_inherited_context(self):
"Context variables can be retrieved from a list of contexts"
response = self.client.get("/request_data_extended/", data={'foo': 'whiz'})
@@ -977,7 +974,6 @@ class ContextTests(TestCase):
self.assertEqual(len(response.context), 2)
self.assertIn('get-foo', response.context)
self.assertEqual(response.context['get-foo'], 'whiz')
- self.assertEqual(response.context['request-foo'], 'whiz')
self.assertEqual(response.context['data'], 'bacon')
try:
@@ -1252,7 +1248,6 @@ class RequestMethodStringDataTests(TestCase):
@override_settings(ROOT_URLCONF='test_client_regress.urls',)
class QueryStringTests(TestCase):
- @ignore_warnings(category=RemovedInDjango19Warning) # `request.REQUEST` is deprecated
def test_get_like_requests(self):
# See: https://code.djangoproject.com/ticket/10571.
for method_name in ('get', 'head'):
@@ -1260,25 +1255,19 @@ class QueryStringTests(TestCase):
method = getattr(self.client, method_name)
response = method("/request_data/", data={'foo': 'whiz'})
self.assertEqual(response.context['get-foo'], 'whiz')
- self.assertEqual(response.context['request-foo'], 'whiz')
# A GET-like request can pass a query string as part of the URL
response = method("/request_data/?foo=whiz")
self.assertEqual(response.context['get-foo'], 'whiz')
- self.assertEqual(response.context['request-foo'], 'whiz')
# Data provided in the URL to a GET-like request is overridden by actual form data
response = method("/request_data/?foo=whiz", data={'foo': 'bang'})
self.assertEqual(response.context['get-foo'], 'bang')
- self.assertEqual(response.context['request-foo'], 'bang')
response = method("/request_data/?foo=whiz", data={'bar': 'bang'})
self.assertEqual(response.context['get-foo'], None)
self.assertEqual(response.context['get-bar'], 'bang')
- self.assertEqual(response.context['request-foo'], None)
- self.assertEqual(response.context['request-bar'], 'bang')
- @ignore_warnings(category=RemovedInDjango19Warning) # `request.REQUEST` is deprecated
def test_post_like_requests(self):
# A POST-like request can pass a query string as data
response = self.client.post("/request_data/", data={'foo': 'whiz'})
@@ -1289,21 +1278,17 @@ class QueryStringTests(TestCase):
response = self.client.post("/request_data/?foo=whiz")
self.assertEqual(response.context['get-foo'], 'whiz')
self.assertEqual(response.context['post-foo'], None)
- self.assertEqual(response.context['request-foo'], 'whiz')
# POST data provided in the URL augments actual form data
response = self.client.post("/request_data/?foo=whiz", data={'foo': 'bang'})
self.assertEqual(response.context['get-foo'], 'whiz')
self.assertEqual(response.context['post-foo'], 'bang')
- self.assertEqual(response.context['request-foo'], 'bang')
response = self.client.post("/request_data/?foo=whiz", data={'bar': 'bang'})
self.assertEqual(response.context['get-foo'], 'whiz')
self.assertEqual(response.context['get-bar'], None)
self.assertEqual(response.context['post-foo'], None)
self.assertEqual(response.context['post-bar'], 'bang')
- self.assertEqual(response.context['request-foo'], 'whiz')
- self.assertEqual(response.context['request-bar'], 'bang')
@override_settings(ROOT_URLCONF='test_client_regress.urls')
diff --git a/tests/test_client_regress/views.py b/tests/test_client_regress/views.py
index 28635940ae..1c5e221a2a 100644
--- a/tests/test_client_regress/views.py
+++ b/tests/test_client_regress/views.py
@@ -38,17 +38,11 @@ get_view = login_required(get_view)
def request_data(request, template='base.html', data='sausage'):
"A simple view that returns the request data in the context"
-
- request_foo = request.REQUEST.get('foo')
- request_bar = request.REQUEST.get('bar')
-
return render_to_response(template, {
'get-foo': request.GET.get('foo'),
'get-bar': request.GET.get('bar'),
'post-foo': request.POST.get('foo'),
'post-bar': request.POST.get('bar'),
- 'request-foo': request_foo,
- 'request-bar': request_bar,
'data': data,
})