Skip to content

Commit

Permalink
Fixed malfunction in facility creation (#931)
Browse files Browse the repository at this point in the history
* Fixed facility creation permission

* Made requested changes

* Refactored the code

* Optimised facility permissions check

Co-authored-by: Vignesh Hari <vichuhari100@gmail.com>
  • Loading branch information
aeswibon and vigneshhari authored Jul 18, 2022
1 parent 5874f32 commit f2a0677
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions care/facility/models/mixins/permissions/facility.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,33 @@ class FacilityPermissionMixin(BasePermissionMixin):
def has_bulk_upsert_permission(request):
return request.user.is_superuser

@staticmethod
def has_write_permission(request):
from care.users.models import State, District, LocalBody
try:
state = State.objects.get(id=request.data["state"])
district = District.objects.get(id=request.data["district"])
local_body = LocalBody.objects.get(id=request.data["local_body"])
return (
request.user.is_superuser or (
request.user.user_type <= User.TYPE_VALUE_MAP["LocalBodyAdmin"]
and state == request.user.state
and district == request.user.district
and local_body == request.user.local_body
) or (
request.user.user_type > User.TYPE_VALUE_MAP["LocalBodyAdmin"]
and request.user.user_type <= User.TYPE_VALUE_MAP["DistrictAdmin"]
and state == request.user.state
and district == request.user.district
) or (
request.user.user_type > User.TYPE_VALUE_MAP["DistrictAdmin"]
and request.user.user_type <= User.TYPE_VALUE_MAP["StateAdmin"]
and state == request.user.state
)
)
except Exception:
return False

def has_object_read_permission(self, request):
return (
(request.user.is_superuser)
Expand Down

0 comments on commit f2a0677

Please sign in to comment.