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:
parent
15f52f0c5b
commit
043175c3fb
@ -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",
|
||||
|
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user