• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

akvo / iwsims-demo / #72

28 Apr 2025 03:28AM UTC coverage: 86.134% (+1.1%) from 85.024%
#72

push

coveralls-python

web-flow
Merge pull request #20 from akvo/feature/19-eng-1231-dynamic-level-approval

Feature/19 eng 1231 dynamic level approval

2646 of 3188 branches covered (83.0%)

Branch coverage included in aggregate %.

5995 of 6844 relevant lines covered (87.59%)

0.88 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

66.67
backend/utils/custom_permissions.py
1
from rest_framework.permissions import BasePermission
1✔
2

3
from api.v1.v1_profile.constants import UserRoleTypes
1✔
4
from api.v1.v1_forms.models import FormAccess
1✔
5
from api.v1.v1_forms.constants import FormAccessTypes
1✔
6

7

8
class IsSubmitter(BasePermission):
1✔
9
    def has_permission(self, request, view):
1✔
10
        # Check for approver access via FormAccess
11
        has_edit_access = FormAccess.objects.filter(
×
12
            user_form__user=request.user,
13
            access_type=FormAccessTypes.edit
14
        ).exists()
15
        if has_edit_access:
×
16
            return True
×
17
        return False
×
18

19

20
class IsApprover(BasePermission):
1✔
21
    def has_permission(self, request, view):
1✔
22
        # Check if user has any form with approver access
23
        has_approver_access = FormAccess.objects.filter(
1✔
24
            user_form__user=request.user,
25
            access_type=FormAccessTypes.approve
26
        ).exists()
27
        return has_approver_access
1✔
28

29

30
class IsAdmin(BasePermission):
1✔
31
    def has_permission(self, request, view):
1✔
32
        if request.user.user_access.role == UserRoleTypes.admin:
1!
33
            return True
1✔
34
        return False
×
35

36

37
class IsSuperAdmin(BasePermission):
1✔
38
    def has_permission(self, request, view):
1✔
39
        if request.user.user_access.role == UserRoleTypes.super_admin:
1✔
40
            return True
1✔
41
        return False
1✔
42

43

44
class PublicGet(BasePermission):
1✔
45
    def has_permission(self, request, view):
1✔
46
        if request.method == "GET":
1✔
47
            return True
1✔
48
        if request.user.is_anonymous:
1!
49
            return False
×
50
        if request.method == "DELETE":
1!
51
            if request.user.user_access.role in [
1!
52
                UserRoleTypes.super_admin,
53
                UserRoleTypes.admin,
54
            ]:
55
                return True
1✔
56
            return False
×
57
        if request.user.user_access.role in [
×
58
            UserRoleTypes.super_admin,
59
            UserRoleTypes.admin,
60
        ]:
61
            return True
×
62
        # Check for approver access via FormAccess
63
        has_approver_access = FormAccess.objects.filter(
×
64
            user_form__user=request.user,
65
            access_type=FormAccessTypes.approve
66
        ).exists()
67
        if has_approver_access:
×
68
            return True
×
69
        return False
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc