1
0
mirror of https://github.com/django/django.git synced 2025-04-08 23:46:43 +00:00

magic-removal: moved request.user handling out of django.core.handlers

git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2490 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Joseph Kocherhans 2006-03-06 22:30:18 +00:00
parent 15f52f0c5b
commit 043175c3fb
4 changed files with 28 additions and 33 deletions

View File

@ -207,6 +207,7 @@ TRANSACTIONS_MANAGED = False
# response phase the middleware will be applied in reverse order.
MIDDLEWARE_CLASSES = (
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
# "django.middleware.http.ConditionalGetMiddleware",
# "django.middleware.gzip.GZipMiddleware",
"django.middleware.common.CommonMiddleware",

View File

@ -1,18 +1,30 @@
# TODO: this will be replaced by the muti-auth stuff
class UserSource:
def get_user(self, request):
from django.contrib.auth.models import User, SESSION_KEY
class UserWrapper(object):
"""
Proxy to lazily load a user object.
"""
def __init__(self, login):
self._login = login
self._cached_user = None
def _get_user(self):
from django.contrib.auth.models import User
if not self._cached_user:
self._cached_user = User.objects.get(pk=self._login)
return self._cached_user
_user = property(_get_user)
def __getattr__(self, name):
return getattr(self._user, name)
class AuthenticationMiddleware:
def process_request(self, request):
from django.contrib.auth.models import SESSION_KEY
assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
try:
user_id = request.session[SESSION_KEY]
if not user_id:
raise ValueError
user = User.objects.get(pk=user_id)
except (AttributeError, KeyError, ValueError, User.DoesNotExist):
from django.parts.auth import anonymoususers
user = anonymoususers.AnonymousUser()
return user
class RequestUserMiddleware:
def process_request(self, request):
request._user_source = UserSource()
request.user = UserWrapper(user_id)
except KeyError:
from django.parts.auth.anonymoususers import AnonymousUser
request.user = AnonymousUser()
return None

View File

@ -98,14 +98,6 @@ class ModPythonRequest(http.HttpRequest):
self._raw_post_data = self._req.read()
return self._raw_post_data
def _get_user(self):
if not hasattr(self, '_user'):
self._user = self._user_source.get_user(self)
return self._user
def _set_user(self, value):
self._user = value
GET = property(_get_get, _set_get)
POST = property(_get_post, _set_post)
COOKIES = property(_get_cookies, _set_cookies)
@ -113,7 +105,6 @@ class ModPythonRequest(http.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):

View File

@ -119,21 +119,12 @@ class WSGIRequest(http.HttpRequest):
self._raw_post_data = self.environ['wsgi.input'].read(int(self.environ["CONTENT_LENGTH"]))
return self._raw_post_data
def _get_user(self):
if not hasattr(self, '_user'):
self._user = self._user_source.get_user(self)
return self._user
def _set_user(self, value):
self._user = value
GET = property(_get_get, _set_get)
POST = property(_get_post, _set_post)
COOKIES = property(_get_cookies, _set_cookies)
FILES = property(_get_files)
REQUEST = property(_get_request)
raw_post_data = property(_get_raw_post_data)
user = property(_get_user, _set_user)
class WSGIHandler(BaseHandler):
def __call__(self, environ, start_response):