1
0
mirror of https://github.com/django/django.git synced 2025-06-05 03:29:12 +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. # response phase the middleware will be applied in reverse order.
MIDDLEWARE_CLASSES = ( MIDDLEWARE_CLASSES = (
"django.contrib.sessions.middleware.SessionMiddleware", "django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
# "django.middleware.http.ConditionalGetMiddleware", # "django.middleware.http.ConditionalGetMiddleware",
# "django.middleware.gzip.GZipMiddleware", # "django.middleware.gzip.GZipMiddleware",
"django.middleware.common.CommonMiddleware", "django.middleware.common.CommonMiddleware",

View File

@ -1,18 +1,30 @@
# TODO: this will be replaced by the muti-auth stuff class UserWrapper(object):
class UserSource: """
def get_user(self, request): Proxy to lazily load a user object.
from django.contrib.auth.models import User, SESSION_KEY """
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: try:
user_id = request.session[SESSION_KEY] user_id = request.session[SESSION_KEY]
if not user_id: request.user = UserWrapper(user_id)
raise ValueError except KeyError:
user = User.objects.get(pk=user_id) from django.parts.auth.anonymoususers import AnonymousUser
except (AttributeError, KeyError, ValueError, User.DoesNotExist): request.user = AnonymousUser()
from django.parts.auth import anonymoususers
user = anonymoususers.AnonymousUser()
return user
class RequestUserMiddleware:
def process_request(self, request):
request._user_source = UserSource()
return None return None

View File

@ -98,14 +98,6 @@ class ModPythonRequest(http.HttpRequest):
self._raw_post_data = self._req.read() self._raw_post_data = self._req.read()
return self._raw_post_data 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) GET = property(_get_get, _set_get)
POST = property(_get_post, _set_post) POST = property(_get_post, _set_post)
COOKIES = property(_get_cookies, _set_cookies) COOKIES = property(_get_cookies, _set_cookies)
@ -113,7 +105,6 @@ class ModPythonRequest(http.HttpRequest):
META = property(_get_meta) META = property(_get_meta)
REQUEST = property(_get_request) REQUEST = property(_get_request)
raw_post_data = property(_get_raw_post_data) raw_post_data = property(_get_raw_post_data)
user = property(_get_user, _set_user)
class ModPythonHandler(BaseHandler): class ModPythonHandler(BaseHandler):
def __call__(self, req): 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"])) self._raw_post_data = self.environ['wsgi.input'].read(int(self.environ["CONTENT_LENGTH"]))
return self._raw_post_data 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) GET = property(_get_get, _set_get)
POST = property(_get_post, _set_post) POST = property(_get_post, _set_post)
COOKIES = property(_get_cookies, _set_cookies) COOKIES = property(_get_cookies, _set_cookies)
FILES = property(_get_files) FILES = property(_get_files)
REQUEST = property(_get_request) REQUEST = property(_get_request)
raw_post_data = property(_get_raw_post_data) raw_post_data = property(_get_raw_post_data)
user = property(_get_user, _set_user)
class WSGIHandler(BaseHandler): class WSGIHandler(BaseHandler):
def __call__(self, environ, start_response): def __call__(self, environ, start_response):