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
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from django.db.models import QuerySet
3from rest_framework.generics import get_object_or_404
4from rest_framework.permissions import BasePermission
6from sales.models.order import Order
7from sales.models.shift import Shift
8from sales.services import is_manager
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)
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)