summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Cahoon <chris.cahoon@gmail.com>2009-06-18 05:01:23 +0000
committerChris Cahoon <chris.cahoon@gmail.com>2009-06-18 05:01:23 +0000
commita86d5ddc77415a08d4a971f0abb18ef28f17cdb2 (patch)
tree0b75c658c80fc007b02c1211e1184a57e3556249
parentbab5ab348e50f563e418580df1ae98df1d5c381f (diff)
downloaddjango-a86d5ddc77415a08d4a971f0abb18ef28f17cdb2.tar.gz
[soc2009/http-wsgi-improvements] Moved common code from core.handlers.modpython and core.handlers.wsgi into core.handlers.base.process_request.
Passes regression tests. git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/http-wsgi-improvements@11039 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/core/handlers/base.py20
-rw-r--r--django/core/handlers/modpython.py17
-rw-r--r--django/core/handlers/wsgi.py17
3 files changed, 22 insertions, 32 deletions
diff --git a/django/core/handlers/base.py b/django/core/handlers/base.py
index e6ef6e2f9e..a6519d6167 100644
--- a/django/core/handlers/base.py
+++ b/django/core/handlers/base.py
@@ -63,6 +63,26 @@ class BaseHandler(object):
# as a flag for initialization being complete.
self._request_middleware = request_middleware
+ def process_request(self, request_env):
+ signals.request_started.send(sender=self.__class__)
+ try:
+ try:
+ request = self.request_class(request_env)
+ except UnicodeDecodeError:
+ response = http.HttpResponseBadRequest()
+ else:
+ response = self.get_response(request)
+
+ # Apply response middleware
+ if not isinstance(response, http.HttpResponseSendFile):
+ for middleware_method in self._response_middleware:
+ response = middleware_method(request, response)
+ response = self.apply_response_fixes(request, response)
+ finally:
+ signals.request_finished.send(sender=self.__class__)
+
+ return response
+
def get_response(self, request):
"Returns an HttpResponse object for the given HttpRequest"
from django.core import exceptions, urlresolvers
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py
index c6dcf23e9a..95a99e89bc 100644
--- a/django/core/handlers/modpython.py
+++ b/django/core/handlers/modpython.py
@@ -2,7 +2,6 @@ import os
from pprint import pformat
from django import http
-from django.core import signals
from django.core.handlers.base import BaseHandler
from django.core.urlresolvers import set_script_prefix
from django.utils import datastructures
@@ -191,21 +190,7 @@ class ModPythonHandler(BaseHandler):
self.load_middleware()
set_script_prefix(req.get_options().get('django.root', ''))
- signals.request_started.send(sender=self.__class__)
- try:
- try:
- request = self.request_class(req)
- except UnicodeDecodeError:
- response = http.HttpResponseBadRequest()
- else:
- response = self.get_response(request)
-
- # Apply response middleware
- for middleware_method in self._response_middleware:
- response = middleware_method(request, response)
- response = self.apply_response_fixes(request, response)
- finally:
- signals.request_finished.send(sender=self.__class__)
+ response = self.process_request(req)
# Convert our custom HttpResponse object back into the mod_python req.
req.content_type = response['Content-Type']
diff --git a/django/core/handlers/wsgi.py b/django/core/handlers/wsgi.py
index 927b098815..10a5af7ab0 100644
--- a/django/core/handlers/wsgi.py
+++ b/django/core/handlers/wsgi.py
@@ -6,7 +6,6 @@ except ImportError:
from StringIO import StringIO
from django import http
-from django.core import signals
from django.core.handlers import base
from django.core.urlresolvers import set_script_prefix
from django.utils import datastructures
@@ -231,21 +230,7 @@ class WSGIHandler(base.BaseHandler):
self.initLock.release()
set_script_prefix(base.get_script_name(environ))
- signals.request_started.send(sender=self.__class__)
- try:
- try:
- request = self.request_class(environ)
- except UnicodeDecodeError:
- response = http.HttpResponseBadRequest()
- else:
- response = self.get_response(request)
-
- # Apply response middleware
- for middleware_method in self._response_middleware:
- response = middleware_method(request, response)
- response = self.apply_response_fixes(request, response)
- finally:
- signals.request_finished.send(sender=self.__class__)
+ response = self.process_request(environ)
try:
status_text = STATUS_CODE_TEXT[response.status_code]