From 560e87219e85a41d8bece56f987254435841f9a2 Mon Sep 17 00:00:00 2001 From: Simon Yuill Date: Thu, 21 Aug 2025 15:49:48 +0100 Subject: [PATCH 1/6] change return HttpResponseNotFound to raise Http404 --- wagtail_qrcode/views.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/wagtail_qrcode/views.py b/wagtail_qrcode/views.py index 2d60022..d96ca67 100644 --- a/wagtail_qrcode/views.py +++ b/wagtail_qrcode/views.py @@ -1,4 +1,4 @@ -from django.http import HttpResponseNotFound, HttpResponseRedirect +from django.http import Http404, HttpResponseRedirect from wagtail.models import Page @@ -10,11 +10,11 @@ def qr_code_page_view(request): specific_cls = Page.objects.get(id=page_id).specific_class page = specific_cls.objects.get(id=page_id) except Page.DoesNotExist: - return HttpResponseNotFound("Page not found") + raise Http404 if hasattr(page, "qr_code_usage"): page.qr_code_usage += 1 page.save() return HttpResponseRedirect(page.url) - - return HttpResponseNotFound("Page not found") + else: + raise Http404 From 2d5307cbc76c405375cb5e44c3c18b644bf0bea5 Mon Sep 17 00:00:00 2001 From: Simon Yuill Date: Thu, 21 Aug 2025 16:13:20 +0100 Subject: [PATCH 2/6] view code updated --- wagtail_qrcode/views.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/wagtail_qrcode/views.py b/wagtail_qrcode/views.py index d96ca67..932c256 100644 --- a/wagtail_qrcode/views.py +++ b/wagtail_qrcode/views.py @@ -15,6 +15,5 @@ def qr_code_page_view(request): if hasattr(page, "qr_code_usage"): page.qr_code_usage += 1 page.save() - return HttpResponseRedirect(page.url) - else: - raise Http404 + + return HttpResponseRedirect(page.url) From f3cb9981825b48505d2fec9c7c2e73006f5d925e Mon Sep 17 00:00:00 2001 From: Simon Yuill Date: Thu, 21 Aug 2025 16:18:51 +0100 Subject: [PATCH 3/6] more error handling in view --- wagtail_qrcode/views.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/wagtail_qrcode/views.py b/wagtail_qrcode/views.py index 932c256..82a1e69 100644 --- a/wagtail_qrcode/views.py +++ b/wagtail_qrcode/views.py @@ -4,7 +4,12 @@ def qr_code_page_view(request): """QR code redirect view.""" - page_id = int(request.GET.get("id")) + try: + page_id = int(request.GET.get("id")) + except ValueError: + raise Http404 + except TypeError: + raise Http404 try: specific_cls = Page.objects.get(id=page_id).specific_class From c110640a6e6860f6101faee031ab026deb747382 Mon Sep 17 00:00:00 2001 From: Simon Yuill Date: Fri, 22 Aug 2025 13:44:26 +0100 Subject: [PATCH 4/6] use specific() rather than specific_class --- wagtail_qrcode/views.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/wagtail_qrcode/views.py b/wagtail_qrcode/views.py index 82a1e69..32a8c55 100644 --- a/wagtail_qrcode/views.py +++ b/wagtail_qrcode/views.py @@ -12,8 +12,7 @@ def qr_code_page_view(request): raise Http404 try: - specific_cls = Page.objects.get(id=page_id).specific_class - page = specific_cls.objects.get(id=page_id) + page = Page.objects.get(id=page_id).specific() except Page.DoesNotExist: raise Http404 From 84b14507726e029855ed2326b4ba63e921b74c57 Mon Sep 17 00:00:00 2001 From: Simon Yuill Date: Fri, 22 Aug 2025 13:46:55 +0100 Subject: [PATCH 5/6] use specific rather than specific_class --- wagtail_qrcode/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wagtail_qrcode/views.py b/wagtail_qrcode/views.py index 32a8c55..2db57a9 100644 --- a/wagtail_qrcode/views.py +++ b/wagtail_qrcode/views.py @@ -12,7 +12,7 @@ def qr_code_page_view(request): raise Http404 try: - page = Page.objects.get(id=page_id).specific() + page = Page.objects.get(id=page_id).specific except Page.DoesNotExist: raise Http404 From 770855d5a33e47dbbdf9ba7d578bc710e731c2fc Mon Sep 17 00:00:00 2001 From: Simon Yuill Date: Fri, 22 Aug 2025 14:00:05 +0100 Subject: [PATCH 6/6] Additional information provided with error messages --- wagtail_qrcode/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wagtail_qrcode/views.py b/wagtail_qrcode/views.py index 2db57a9..0e5533d 100644 --- a/wagtail_qrcode/views.py +++ b/wagtail_qrcode/views.py @@ -7,9 +7,9 @@ def qr_code_page_view(request): try: page_id = int(request.GET.get("id")) except ValueError: - raise Http404 + raise Http404("Page ID not valid, incorrect value") except TypeError: - raise Http404 + raise Http404("Page ID not present, incorrect type") try: page = Page.objects.get(id=page_id).specific