Coverage for website/members/middleware.py: 93.33%

15 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from django.utils.functional import SimpleLazyObject 

2 

3from members.models import Member 

4 

5 

6def get_member(request): 

7 try: 

8 return Member.objects.get(pk=request.user.pk) 

9 except AttributeError: 

10 return None 

11 except Member.DoesNotExist: 

12 return None 

13 

14 

15class MemberMiddleware: 

16 """Adds the member attribute to requests.""" 

17 

18 def __init__(self, get_response): 

19 self.get_response = get_response 

20 

21 def __call__(self, request): 

22 # This needs to be a lazy object as Django REST Frameworks calls the 

23 # the middleware before setting request.user 

24 # This also avoids unnecessary queries when request.member is not used 

25 request.member = SimpleLazyObject(lambda: get_member(request)) 

26 

27 return self.get_response(request)