FossilRepo
| 4ce269c… | ragelink | 1 | import threading |
| 4ce269c… | ragelink | 2 | |
| 4ce269c… | ragelink | 3 | _thread_local = threading.local() |
| 4ce269c… | ragelink | 4 | |
| 4ce269c… | ragelink | 5 | |
| 4ce269c… | ragelink | 6 | def get_current_user(): |
| 4ce269c… | ragelink | 7 | return getattr(_thread_local, "user", None) |
| 4ce269c… | ragelink | 8 | |
| 4ce269c… | ragelink | 9 | |
| 4ce269c… | ragelink | 10 | class CurrentUserMiddleware: |
| 4ce269c… | ragelink | 11 | """Store the current user on thread-local storage for use in signals and model save methods.""" |
| 4ce269c… | ragelink | 12 | |
| 4ce269c… | ragelink | 13 | def __init__(self, get_response): |
| 4ce269c… | ragelink | 14 | self.get_response = get_response |
| 4ce269c… | ragelink | 15 | |
| 4ce269c… | ragelink | 16 | def __call__(self, request): |
| 4ce269c… | ragelink | 17 | _thread_local.user = getattr(request, "user", None) |
| 4ce269c… | ragelink | 18 | response = self.get_response(request) |
| 4ce269c… | ragelink | 19 | return response |