Coverage for website/sales/api/v2/admin/permissions.py: 86.21%

21 statements  

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

1from django.db.models import QuerySet 

2 

3from rest_framework.generics import get_object_or_404 

4from rest_framework.permissions import BasePermission 

5 

6from sales.models.order import Order 

7from sales.models.shift import Shift 

8from sales.services import is_manager 

9 

10 

11class IsManager(BasePermission): 

12 def has_permission(self, request, view): 

13 shift_lookup_field = ( 

14 view.shift_lookup_field if hasattr(view, "shift_lookup_field") else None 

15 ) 

16 if shift_lookup_field and shift_lookup_field in view.kwargs: 

17 obj = get_object_or_404(Shift, pk=view.kwargs.get(shift_lookup_field)) 

18 return is_manager(request.member, obj) 

19 return super().has_permission(request, view) 

20 

21 def has_object_permission(self, request, view, obj): 

22 if isinstance(obj, QuerySet): 22 ↛ 23line 22 didn't jump to line 23 because the condition on line 22 was never true

23 return True 

24 if not request.member: 24 ↛ 25line 24 didn't jump to line 25 because the condition on line 24 was never true

25 return False 

26 if isinstance(obj, Order): 

27 obj = obj.shift 

28 return is_manager(request.member, obj)