diff options
author | Chris Cahoon <chris.cahoon@gmail.com> | 2009-06-18 05:01:23 +0000 |
---|---|---|
committer | Chris Cahoon <chris.cahoon@gmail.com> | 2009-06-18 05:01:23 +0000 |
commit | a86d5ddc77415a08d4a971f0abb18ef28f17cdb2 (patch) | |
tree | 0b75c658c80fc007b02c1211e1184a57e3556249 | |
parent | bab5ab348e50f563e418580df1ae98df1d5c381f (diff) | |
download | django-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.py | 20 | ||||
-rw-r--r-- | django/core/handlers/modpython.py | 17 | ||||
-rw-r--r-- | django/core/handlers/wsgi.py | 17 |
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] |