2563: API lister les chercheurs d'une région, partie 1
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / chercheurs / middleware.py
1 from django.core.exceptions import MultipleObjectsReturned
2 from chercheurs.models import Personne, Chercheur
3
4 class LazyChercheur(object):
5
6 def __get__(self, request, obj_type=None):
7 if not hasattr(request, '_cached_chercheur'):
8 request._cached_chercheur = None
9 if request.user.is_authenticated():
10 try:
11 request._cached_chercheur = Chercheur.objects.get(actif=True, courriel=request.user.email)
12 except (Personne.DoesNotExist, Chercheur.DoesNotExist, MultipleObjectsReturned):
13 pass
14 return request._cached_chercheur
15
16 class ChercheurMiddleware(object):
17
18 def process_request(self, request):
19 request.__class__.chercheur = LazyChercheur()