Coverage for website/members/decorators.py: 100.00%

10 statements  

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

1from django.core.exceptions import PermissionDenied 

2 

3 

4def membership_required(view_function): 

5 return ActiveMembershipRequired(view_function) 

6 

7 

8class ActiveMembershipRequired: 

9 """Decorator that checks if the user has an active membership.""" 

10 

11 def __init__(self, view_function): 

12 self.view_function = view_function 

13 

14 def __call__(self, request, *args, **kwargs): 

15 if request.member and request.member.has_active_membership(): 

16 return self.view_function(request, *args, **kwargs) 

17 

18 raise PermissionDenied