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

@@ -54,10 +54,6 @@ outputType = "webview"
localPort = 5000 localPort = 5000
externalPort = 80 externalPort = 80
[[ports]]
localPort = 35423
externalPort = 3002
[[ports]] [[ports]]
localPort = 41923 localPort = 41923
externalPort = 3000 externalPort = 3000

View File

@@ -18,6 +18,7 @@ from django.http import (
HttpResponse, HttpResponse,
HttpRequest, HttpRequest,
JsonResponse, JsonResponse,
Http404,
) )
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from django.contrib import messages from django.contrib import messages
@@ -818,9 +819,12 @@ class ParkDetailView(
queryset = self.get_queryset() queryset = self.get_queryset()
slug = self.kwargs.get(self.slug_url_kwarg) slug = self.kwargs.get(self.slug_url_kwarg)
if slug is None: if slug is None:
raise ObjectDoesNotExist("No slug provided") raise Http404("No slug provided")
park, _ = Park.get_by_slug(slug) try:
return park park, _ = Park.get_by_slug(slug)
return park
except Park.DoesNotExist:
raise Http404("Park not found")
def get_queryset(self) -> QuerySet[Park]: def get_queryset(self) -> QuerySet[Park]:
return cast( return cast(
@@ -870,11 +874,15 @@ class ParkAreaDetailView(
park_slug = self.kwargs.get("park_slug") park_slug = self.kwargs.get("park_slug")
area_slug = self.kwargs.get("area_slug") area_slug = self.kwargs.get("area_slug")
if park_slug is None or area_slug is None: if park_slug is None or area_slug is None:
raise ObjectDoesNotExist("Missing slug") raise Http404("Missing slug")
area, _ = ParkArea.get_by_slug(area_slug) try:
if area.park.slug != park_slug: # Find the park first
raise ObjectDoesNotExist("Park slug doesn't match") park = Park.objects.get(slug=park_slug)
return area # 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]: def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)