summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2012-10-20 12:34:50 +0200
committerClaude Paroz <claude@2xlibre.net>2012-10-20 13:55:13 +0200
commit681550ca6d5ff3e591a769643e37fd0b50f29c91 (patch)
tree66dfb22aab1ebe0868d45f22a1913d457d1b6cfb
parent3084b1cfd6110e2ef57f1a67f8b7dbda309e2e13 (diff)
Removed custom WSGIRequestHandler.get_environ
We probably historically customized it for good reasons, but currently, the differences with upstream Python are not significant any longer. Also fixes #19075 for which a test has been added.
-rw-r--r--django/core/servers/basehttp.py34
-rw-r--r--tests/regressiontests/servers/tests.py8
-rw-r--r--tests/regressiontests/servers/urls.py3
-rw-r--r--tests/regressiontests/servers/views.py6
4 files changed, 16 insertions, 35 deletions
diff --git a/django/core/servers/basehttp.py b/django/core/servers/basehttp.py
index 19b287af87..a7004f2c2f 100644
--- a/django/core/servers/basehttp.py
+++ b/django/core/servers/basehttp.py
@@ -14,9 +14,8 @@ import socket
import sys
import traceback
try:
- from urllib.parse import unquote, urljoin
+ from urllib.parse import urljoin
except ImportError: # Python 2
- from urllib import unquote
from urlparse import urljoin
from django.utils.six.moves import socketserver
from wsgiref import simple_server
@@ -139,37 +138,6 @@ class WSGIRequestHandler(simple_server.WSGIRequestHandler, object):
self.style = color_style()
super(WSGIRequestHandler, self).__init__(*args, **kwargs)
- def get_environ(self):
- env = self.server.base_environ.copy()
- env['SERVER_PROTOCOL'] = self.request_version
- env['REQUEST_METHOD'] = self.command
- if '?' in self.path:
- path,query = self.path.split('?',1)
- else:
- path,query = self.path,''
-
- env['PATH_INFO'] = unquote(path)
- env['QUERY_STRING'] = query
- env['REMOTE_ADDR'] = self.client_address[0]
- env['CONTENT_TYPE'] = self.headers.get('content-type', 'text/plain')
-
- length = self.headers.get('content-length')
- if length:
- env['CONTENT_LENGTH'] = length
-
- for key, value in self.headers.items():
- key = key.replace('-','_').upper()
- value = value.strip()
- if key in env:
- # Skip content length, type, etc.
- continue
- if 'HTTP_' + key in env:
- # Comma-separate multiple headers
- env['HTTP_' + key] += ',' + value
- else:
- env['HTTP_' + key] = value
- return env
-
def log_message(self, format, *args):
# Don't bother logging requests for admin images or the favicon.
if (self.path.startswith(self.admin_static_prefix)
diff --git a/tests/regressiontests/servers/tests.py b/tests/regressiontests/servers/tests.py
index c90c785a6e..f54e34ce28 100644
--- a/tests/regressiontests/servers/tests.py
+++ b/tests/regressiontests/servers/tests.py
@@ -1,6 +1,9 @@
+# -*- encoding: utf-8 -*-
"""
Tests for django.core.servers.
"""
+from __future__ import unicode_literals
+
import os
try:
from urllib.request import urlopen, HTTPError
@@ -11,6 +14,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.test import LiveServerTestCase
from django.core.servers.basehttp import WSGIServerException
from django.test.utils import override_settings
+from django.utils.http import urlencode
from .models import Person
@@ -134,6 +138,10 @@ class LiveServerViews(LiveServerBase):
f = self.urlopen('/media/example_media_file.txt')
self.assertEqual(f.read().rstrip(b'\r\n'), b'example media file')
+ def test_environ(self):
+ f = self.urlopen('/environ_view/?%s' % urlencode({'q': 'ั‚ะตัั‚'}))
+ self.assertIn(b"QUERY_STRING: 'q=%D1%82%D0%B5%D1%81%D1%82'", f.read())
+
class LiveServerDatabase(LiveServerBase):
diff --git a/tests/regressiontests/servers/urls.py b/tests/regressiontests/servers/urls.py
index c8ca1ac7a4..a857c45f95 100644
--- a/tests/regressiontests/servers/urls.py
+++ b/tests/regressiontests/servers/urls.py
@@ -9,4 +9,5 @@ urlpatterns = patterns('',
url(r'^example_view/$', views.example_view),
url(r'^model_view/$', views.model_view),
url(r'^create_model_instance/$', views.create_model_instance),
-) \ No newline at end of file
+ url(r'^environ_view/$', views.environ_view),
+)
diff --git a/tests/regressiontests/servers/views.py b/tests/regressiontests/servers/views.py
index 94a4f2d9ef..00baf4b5ac 100644
--- a/tests/regressiontests/servers/views.py
+++ b/tests/regressiontests/servers/views.py
@@ -14,4 +14,8 @@ def model_view(request):
def create_model_instance(request):
person = Person(name='emily')
person.save()
- return HttpResponse('') \ No newline at end of file
+ return HttpResponse('')
+
+
+def environ_view(request):
+ return HttpResponse("\n".join(["%s: %r" % (k, v) for k, v in request.environ.items()]))