From d38093d4662084fb5cf953820f64bc3c9faf4797 Mon Sep 17 00:00:00 2001 From: Pranshu1902 Date: Wed, 29 May 2024 13:23:29 +0530 Subject: [PATCH 1/3] Allow Nurses to clear their home facility --- care/users/api/viewsets/users.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/care/users/api/viewsets/users.py b/care/users/api/viewsets/users.py index af2d91e4c5..d1907a7f35 100644 --- a/care/users/api/viewsets/users.py +++ b/care/users/api/viewsets/users.py @@ -250,8 +250,11 @@ def clear_home_facility(self, request, *args, **kwargs): raise ValidationError({"home_facility": "No Home Facility Present"}) if ( requesting_user.user_type < User.TYPE_VALUE_MAP["DistrictAdmin"] - or requesting_user.user_type in User.READ_ONLY_TYPES - ): + and ( + requesting_user.id != user.id + and requesting_user.user_type == User.TYPE_VALUE_MAP["Nurse"] + ) + ) or requesting_user.user_type in User.READ_ONLY_TYPES: raise ValidationError({"home_facility": "Insufficient Permissions"}) if not self.has_user_type_permission_elevation(requesting_user, user): From 5aa6f6609616e19f6ab357f1c411a48689f7c6e7 Mon Sep 17 00:00:00 2001 From: Pranshu1902 Date: Wed, 29 May 2024 13:37:24 +0530 Subject: [PATCH 2/3] add tests --- care/facility/tests/test_unlink_district_admins.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/care/facility/tests/test_unlink_district_admins.py b/care/facility/tests/test_unlink_district_admins.py index 673ae4e95e..8c676438b4 100644 --- a/care/facility/tests/test_unlink_district_admins.py +++ b/care/facility/tests/test_unlink_district_admins.py @@ -79,3 +79,10 @@ def test_unlink_faciltity_admin_different_district(self): ) self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND) self.assertEqual(response.json()["detail"], "Not found.") + + def test_unlink_home_facility_by_nurse(self): + self.client.force_login(self.staff1) + response = self.client.delete( + f"/api/v1/users/{self.staff1.username}/clear_home_facility/" + ) + self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) From f364c78b71ceeea622cd45bab8c837d1d90c90f7 Mon Sep 17 00:00:00 2001 From: Pranshu1902 Date: Sun, 9 Jun 2024 19:25:35 +0530 Subject: [PATCH 3/3] fix validations conditions --- care/users/api/viewsets/users.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/care/users/api/viewsets/users.py b/care/users/api/viewsets/users.py index 95f58c7aec..bbf587dec7 100644 --- a/care/users/api/viewsets/users.py +++ b/care/users/api/viewsets/users.py @@ -287,12 +287,14 @@ def clear_home_facility(self, request, *args, **kwargs): if not user.home_facility: raise ValidationError({"home_facility": "No Home Facility Present"}) if ( + requesting_user.id == user.id + and requesting_user.user_type == User.TYPE_VALUE_MAP["Nurse"] + ): + pass + elif ( requesting_user.user_type < User.TYPE_VALUE_MAP["DistrictAdmin"] - and ( - requesting_user.id != user.id - and requesting_user.user_type == User.TYPE_VALUE_MAP["Nurse"] - ) - ) or requesting_user.user_type in User.READ_ONLY_TYPES: + or requesting_user.user_type in User.READ_ONLY_TYPES + ): raise ValidationError({"home_facility": "Insufficient Permissions"}) if not self.has_user_type_permission_elevation(requesting_user, user):