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
This commit is contained in:
pac7
2025-09-23 23:03:26 +00:00
parent fff180c476
commit 601538b494
2 changed files with 16 additions and 12 deletions

View File

@@ -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)