You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
789 B
36 lines
789 B
import threading |
|
from django.utils.deprecation import MiddlewareMixin |
|
|
|
|
|
_active = threading.local() |
|
|
|
|
|
def activate(user): |
|
if user.is_anonymous: |
|
_active.user = None |
|
else: |
|
_active.user = user.pk |
|
|
|
|
|
def get_request_user(): |
|
from django.contrib.auth import get_user_model |
|
from django.contrib.auth.models import AnonymousUser |
|
if not hasattr(_active, 'user'): |
|
user = None |
|
elif _active.user is None: |
|
user = AnonymousUser() |
|
else: |
|
User = get_user_model() |
|
user = User.objects.get(pk=_active.user) |
|
return user |
|
|
|
|
|
class RequestUserMiddleware(MiddlewareMixin): |
|
|
|
def process_request(self, request): |
|
activate(request.user) |
|
|
|
''' |
|
def process_response(self, request, response): |
|
return response |
|
'''
|
|
|