Skip to content

Commit 17156b4

Browse files
committed
Use raise_exception option of permission_required everywhere
We now have friendly error pages, including one for 403 errors. Previously, if the user wasn't permitted to do something, they would be redirected back to login without an explanation. This is confusing for users, so let's show the error page instead. Note: in most cases we should not be linking to something the user cannot access, but I'm aware of at least 1 bug where we are, and hopefully this will make it more obvious what needs fixing.
1 parent bca75d7 commit 17156b4

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

manage_breast_screening/mammograms/tests/views/test_appointment_workflow_views.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
assertRedirects,
1212
)
1313

14-
from manage_breast_screening.config.settings import LOGIN_URL
1514
from manage_breast_screening.core.models import AuditLog
1615
from manage_breast_screening.dicom.models import Study as DicomStudy
1716
from manage_breast_screening.dicom.tests.factories import (
@@ -532,7 +531,7 @@ def test_user_not_permitted(self, administrative_user_client):
532531
)
533532
url = reverse("mammograms:start_appointment", kwargs={"pk": appointment.pk})
534533
response = administrative_user_client.http.post(url)
535-
assertRedirects(response, reverse(LOGIN_URL, query={"next": url}))
534+
assert response.status_code == 403
536535

537536

538537
@pytest.mark.django_db
@@ -792,7 +791,7 @@ def test_user_not_permitted(self, administrative_user_client, paused_appointment
792791
"mammograms:resume_appointment", kwargs={"pk": paused_appointment.pk}
793792
)
794793
response = administrative_user_client.http.post(url)
795-
assertRedirects(response, reverse(LOGIN_URL, query={"next": url}))
794+
assert response.status_code == 403
796795

797796

798797
@pytest.mark.django_db

manage_breast_screening/mammograms/views/appointment_workflow_views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ def check_in(request, pk):
306306

307307

308308
@require_http_methods(["POST"])
309-
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT)
309+
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT, raise_exception=True)
310310
def start_appointment(request, pk):
311311
try:
312312
provider = request.user.current_provider
@@ -320,7 +320,7 @@ def start_appointment(request, pk):
320320

321321

322322
@require_http_methods(["POST"])
323-
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT)
323+
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT, raise_exception=True)
324324
def resume_appointment(request, pk):
325325
try:
326326
provider = request.user.current_provider

manage_breast_screening/mammograms/views/mammogram_views.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
logger = logging.getLogger(__name__)
4141

4242

43-
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT)
43+
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT, raise_exception=True)
4444
def appointment_should_not_proceed(
4545
request, appointment_pk, participant_reported_mammogram_pk
4646
):
@@ -103,7 +103,7 @@ def appointment_should_not_proceed(
103103

104104

105105
@require_http_methods(["POST"])
106-
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT)
106+
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT, raise_exception=True)
107107
def attended_not_screened(request, appointment_pk):
108108
provider = request.user.current_provider
109109
try:
@@ -125,6 +125,7 @@ class AppointmentProceedAnywayView(
125125
template_name = "mammograms/proceed_anyway.jinja"
126126
thing_name = "a previous mammogram"
127127
permission_required = Permission.DO_MAMMOGRAM_APPOINTMENT
128+
raise_exception = True
128129

129130
def update_title(self, thing_name):
130131
return "You are continuing despite a recent mammogram"
@@ -188,7 +189,7 @@ def get_context_data(self, **kwargs):
188189

189190

190191
@require_http_methods(["GET"])
191-
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT)
192+
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT, raise_exception=True)
192193
def check_information(request, pk):
193194
provider = request.user.current_provider
194195
try:
@@ -216,7 +217,7 @@ def check_information(request, pk):
216217

217218

218219
@require_http_methods(["POST"])
219-
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT)
220+
@permission_required(Permission.DO_MAMMOGRAM_APPOINTMENT, raise_exception=True)
220221
def complete_screening(request, pk):
221222
provider = request.user.current_provider
222223
try:

manage_breast_screening/mammograms/views/mixins.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ class InProgressAppointmentMixin(PermissionRequiredMixin, AppointmentMixin):
7777
"""
7878

7979
permission_required = Permission.DO_MAMMOGRAM_APPOINTMENT
80+
raise_exception = True
8081

8182
def dispatch(self, request, *args, **kwargs):
8283
appointment = self.appointment # type: ignore

0 commit comments

Comments
 (0)