From c77a36d7af2393ad487cfa749ce7d5f706fb1f7b Mon Sep 17 00:00:00 2001
From: Lucas Brandstaetter <lucas@brandstaetter.tech>
Date: Thu, 17 Aug 2023 00:26:55 +0200
Subject: [PATCH] Fix error handling for static diff revisions

Raise errors instead of returning requests in context.
---
 src/plainui/views.py | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/plainui/views.py b/src/plainui/views.py
index c794cc9a2..a008c5155 100644
--- a/src/plainui/views.py
+++ b/src/plainui/views.py
@@ -17,9 +17,10 @@ from django.contrib.sites.shortcuts import get_current_site
 from django.core.exceptions import PermissionDenied, ValidationError, ImproperlyConfigured
 from django.core import signing
 from django.core.mail import EmailMessage
+from django.core.exceptions import SuspiciousOperation
 from django.db import transaction, connection
 from django.db.models import Q, F, Prefetch
-from django.http import Http404, HttpResponseBadRequest, HttpResponseRedirect, HttpResponseNotFound, HttpResponse, HttpResponseForbidden
+from django.http import Http404, HttpResponseRedirect, HttpResponseNotFound, HttpResponse, HttpResponseForbidden
 from django.shortcuts import redirect, get_object_or_404
 from django.template.loader import render_to_string
 from django.urls import reverse, reverse_lazy, translate_url, NoReverseMatch
@@ -700,13 +701,13 @@ class StaticPageDiffView(ConferenceRequiredMixin, TemplateView):
         rev2_id = self.request.GET.get('rev2')
 
         if rev1_id is None or rev2_id is None:
-            return HttpResponseBadRequest()
+            raise SuspiciousOperation("Only one revision given, need two")
 
         try:
             rev1 = self.static_page.revisions.get(revision=rev1_id)
             rev2 = self.static_page.revisions.get(revision=rev2_id)
         except StaticPageRevision.DoesNotExist:
-            return HttpResponseNotFound()
+            raise Http404("One of the selected revisions was not found")
 
         differ = StaticPageDiff(tabsize=4)
         diff = differ.make_table(rev1.body.splitlines(keepends=True), rev2.body.splitlines(keepends=True), context=True, numlines=3)
-- 
GitLab