Skip to content

Commit e05b574

Browse files
committed
Add READ_IMAGES permission
1 parent 70333c0 commit e05b574

4 files changed

Lines changed: 43 additions & 1 deletion

File tree

manage_breast_screening/auth/models.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ class Permission(StrEnum):
1212
VIEW_MAMMOGRAM_APPOINTMENT = "mammograms.view_mammogram_appointment"
1313
DO_MAMMOGRAM_APPOINTMENT = "mammograms.do_mammogram_appointment"
1414
MANAGE_PROVIDER_SETTINGS = "clinics.manage_provider_settings"
15+
READ_IMAGES = "reading.read_images"

manage_breast_screening/auth/rules.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ def is_superuser(user):
3030

3131

3232
rules.add_perm(Permission.VIEW_PARTICIPANT_DATA, is_clinical | is_administrative)
33+
rules.add_perm(Permission.READ_IMAGES, is_reader)
3334
rules.add_perm(Permission.MANAGE_PROVIDER_SETTINGS, is_superuser)

manage_breast_screening/auth/tests/test_rules.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@ def test_returns_true_for_administrative_user(self):
103103

104104
assert user_assignment.user.has_perm(Permission.VIEW_PARTICIPANT_DATA)
105105

106+
def test_returns_false_for_reader(self):
107+
user_assignment = UserAssignmentFactory.create(reader=True)
108+
user_assignment.make_current()
109+
110+
assert not user_assignment.user.has_perm(Permission.VIEW_PARTICIPANT_DATA)
111+
106112
def test_returns_false_for_user_without_roles(self):
107113
user_assignment = UserAssignmentFactory.create()
108114
user_assignment.make_current()
@@ -115,6 +121,38 @@ def test_returns_false_if_no_provider_given(self):
115121
assert not user_assignment.user.has_perm(Permission.VIEW_PARTICIPANT_DATA)
116122

117123

124+
@pytest.mark.django_db
125+
class TestReadImagesPermission:
126+
def test_returns_true_for_reader(self):
127+
user_assignment = UserAssignmentFactory.create(reader=True)
128+
user_assignment.make_current()
129+
130+
assert user_assignment.user.has_perm(Permission.READ_IMAGES)
131+
132+
def test_returns_false_for_clinical_user(self):
133+
user_assignment = UserAssignmentFactory.create(clinical=True)
134+
user_assignment.make_current()
135+
136+
assert not user_assignment.user.has_perm(Permission.READ_IMAGES)
137+
138+
def test_returns_false_for_administrative_user(self):
139+
user_assignment = UserAssignmentFactory.create(administrative=True)
140+
user_assignment.make_current()
141+
142+
assert not user_assignment.user.has_perm(Permission.READ_IMAGES)
143+
144+
def test_returns_false_for_user_without_roles(self):
145+
user_assignment = UserAssignmentFactory.create()
146+
user_assignment.make_current()
147+
148+
assert not user_assignment.user.has_perm(Permission.READ_IMAGES)
149+
150+
def test_returns_false_if_no_provider_given(self):
151+
user_assignment = UserAssignmentFactory.create()
152+
153+
assert not user_assignment.user.has_perm(Permission.READ_IMAGES)
154+
155+
118156
@pytest.mark.django_db
119157
class TestIsSysadmin:
120158
def test_returns_true_for_sysadmin_user(self):

manage_breast_screening/reading/views.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.contrib.auth.decorators import permission_required
12
from django.forms import Form
23
from django.shortcuts import render
34
from django.views.decorators.http import require_http_methods
@@ -12,14 +13,15 @@
1213

1314

1415
@require_http_methods(["GET"])
16+
@permission_required(Permission.READ_IMAGES, raise_exception=True)
1517
def show_reading_dashboard_view(request):
1618
return render(request, "show_readings.jinja")
1719

1820

1921
class ReadImageView(PermissionRequiredMixin, AppointmentMixin, FormView):
2022
form_class = Form
2123
template_name = "read_image.jinja"
22-
permission_required = Permission.VIEW_MAMMOGRAM_APPOINTMENT
24+
permission_required = Permission.READ_IMAGES
2325

2426
def get_context_data(self, **kwargs):
2527
context = super().get_context_data(**kwargs)

0 commit comments

Comments
 (0)