From 601538b494c66e0018a3a31ebeffdc23e6330158 Mon Sep 17 00:00:00 2001 From: pac7 <47831526-pac7@users.noreply.replit.com> Date: Tue, 23 Sep 2025 23:03:26 +0000 Subject: [PATCH] Improve error handling for park and area detail views Update ParkDetailView and ParkAreaDetailView to raise Http404 exceptions instead of ObjectDoesNotExist for improved HTTP error handling. Replit-Commit-Author: Agent Replit-Commit-Session-Id: c446bc9e-66df-438c-a86c-f53e6da13649 Replit-Commit-Checkpoint-Type: intermediate_checkpoint --- .replit | 4 ---- apps/parks/views.py | 24 ++++++++++++++++-------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/.replit b/.replit index d2411acd..3520ba63 100644 --- a/.replit +++ b/.replit @@ -54,10 +54,6 @@ outputType = "webview" localPort = 5000 externalPort = 80 -[[ports]] -localPort = 35423 -externalPort = 3002 - [[ports]] localPort = 41923 externalPort = 3000 diff --git a/apps/parks/views.py b/apps/parks/views.py index 9d458451..37912daf 100644 --- a/apps/parks/views.py +++ b/apps/parks/views.py @@ -18,6 +18,7 @@ from django.http import ( HttpResponse, HttpRequest, JsonResponse, + Http404, ) from django.core.exceptions import ObjectDoesNotExist from django.contrib import messages @@ -818,9 +819,12 @@ class ParkDetailView( queryset = self.get_queryset() slug = self.kwargs.get(self.slug_url_kwarg) if slug is None: - raise ObjectDoesNotExist("No slug provided") - park, _ = Park.get_by_slug(slug) - return park + raise Http404("No slug provided") + try: + park, _ = Park.get_by_slug(slug) + return park + except Park.DoesNotExist: + raise Http404("Park not found") def get_queryset(self) -> QuerySet[Park]: return cast( @@ -870,11 +874,15 @@ class ParkAreaDetailView( park_slug = self.kwargs.get("park_slug") area_slug = self.kwargs.get("area_slug") if park_slug is None or area_slug is None: - raise ObjectDoesNotExist("Missing slug") - area, _ = ParkArea.get_by_slug(area_slug) - if area.park.slug != park_slug: - raise ObjectDoesNotExist("Park slug doesn't match") - return area + raise Http404("Missing slug") + try: + # Find the park first + park = Park.objects.get(slug=park_slug) + # Then find the area within that park + area = ParkArea.objects.get(park=park, slug=area_slug) + return area + except (Park.DoesNotExist, ParkArea.DoesNotExist): + raise Http404("Park or area not found") def get_context_data(self, **kwargs: Any) -> dict[str, Any]: context = super().get_context_data(**kwargs)