diff options
Diffstat (limited to 'django/core/handlers/modpython.py')
| -rw-r--r-- | django/core/handlers/modpython.py | 51 |
1 files changed, 19 insertions, 32 deletions
diff --git a/django/core/handlers/modpython.py b/django/core/handlers/modpython.py index 37499c6f06..ce7f6f1ad2 100644 --- a/django/core/handlers/modpython.py +++ b/django/core/handlers/modpython.py @@ -1,5 +1,8 @@ from django.core.handlers.base import BaseHandler -from django.utils import datastructures, httpwrappers +from django.core import signals +from django.dispatch import dispatcher +from django.utils import datastructures +from django import http from pprint import pformat import os @@ -7,15 +10,15 @@ import os # settings) until after ModPythonHandler has been called; otherwise os.environ # won't be set up correctly (with respect to settings). -class ModPythonRequest(httpwrappers.HttpRequest): +class ModPythonRequest(http.HttpRequest): def __init__(self, req): self._req = req self.path = req.uri def __repr__(self): - return '<ModPythonRequest\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s,\nuser:%s>' % \ + return '<ModPythonRequest\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' % \ (self.path, pformat(self.GET), pformat(self.POST), pformat(self.COOKIES), - pformat(self.META), pformat(self.user)) + pformat(self.META)) def get_full_path(self): return '%s%s' % (self.path, self._req.args and ('?' + self._req.args) or '') @@ -23,18 +26,18 @@ class ModPythonRequest(httpwrappers.HttpRequest): def _load_post_and_files(self): "Populates self._post and self._files" if self._req.headers_in.has_key('content-type') and self._req.headers_in['content-type'].startswith('multipart'): - self._post, self._files = httpwrappers.parse_file_upload(self._req.headers_in, self.raw_post_data) + self._post, self._files = http.parse_file_upload(self._req.headers_in, self.raw_post_data) else: - self._post, self._files = httpwrappers.QueryDict(self.raw_post_data), datastructures.MultiValueDict() + self._post, self._files = http.QueryDict(self.raw_post_data), datastructures.MultiValueDict() def _get_request(self): if not hasattr(self, '_request'): - self._request = datastructures.MergeDict(self.POST, self.GET) + self._request = datastructures.MergeDict(self.POST, self.GET) return self._request def _get_get(self): if not hasattr(self, '_get'): - self._get = httpwrappers.QueryDict(self._req.args) + self._get = http.QueryDict(self._req.args) return self._get def _set_get(self, get): @@ -50,7 +53,7 @@ class ModPythonRequest(httpwrappers.HttpRequest): def _get_cookies(self): if not hasattr(self, '_cookies'): - self._cookies = httpwrappers.parse_cookie(self._req.headers_in.get('cookie', '')) + self._cookies = http.parse_cookie(self._req.headers_in.get('cookie', '')) return self._cookies def _set_cookies(self, cookies): @@ -95,22 +98,6 @@ class ModPythonRequest(httpwrappers.HttpRequest): self._raw_post_data = self._req.read() return self._raw_post_data - def _get_user(self): - if not hasattr(self, '_user'): - from django.models.auth import users - try: - user_id = self.session[users.SESSION_KEY] - if not user_id: - raise ValueError - self._user = users.get_object(pk=user_id) - except (AttributeError, KeyError, ValueError, users.UserDoesNotExist): - from django.parts.auth import anonymoususers - self._user = anonymoususers.AnonymousUser() - return self._user - - def _set_user(self, user): - self._user = user - GET = property(_get_get, _set_get) POST = property(_get_post, _set_post) COOKIES = property(_get_cookies, _set_cookies) @@ -118,7 +105,6 @@ class ModPythonRequest(httpwrappers.HttpRequest): META = property(_get_meta) REQUEST = property(_get_request) raw_post_data = property(_get_raw_post_data) - user = property(_get_user, _set_user) class ModPythonHandler(BaseHandler): def __call__(self, req): @@ -128,7 +114,6 @@ class ModPythonHandler(BaseHandler): # now that the environ works we can see the correct settings, so imports # that use settings now can work from django.conf import settings - from django.core import db if settings.ENABLE_PSYCO: import psyco @@ -138,15 +123,17 @@ class ModPythonHandler(BaseHandler): if self._request_middleware is None: self.load_middleware() + dispatcher.send(signal=signals.request_started) try: request = ModPythonRequest(req) response = self.get_response(req.uri, request) - finally: - db.db.close() - # Apply response middleware - for middleware_method in self._response_middleware: - response = middleware_method(request, response) + # Apply response middleware + for middleware_method in self._response_middleware: + response = middleware_method(request, response) + + finally: + dispatcher.send(signal=signals.request_finished) # Convert our custom HttpResponse object back into the mod_python req. populate_apache_request(response, req) |
