Refactor error message handling: centralize required fields error message and improve park list template accessibility

This commit is contained in:
pacnpal
2025-02-21 18:55:41 -05:00
parent d7951756dc
commit 3523274cbd
2 changed files with 10 additions and 12 deletions

View File

@@ -9,7 +9,8 @@
<div class="flex items-center space-x-4"> <div class="flex items-center space-x-4">
<h1 class="text-2xl font-bold text-gray-900">Parks</h1> <h1 class="text-2xl font-bold text-gray-900">Parks</h1>
<div class="flex items-center space-x-2 bg-gray-100 rounded-lg p-1" role="group" aria-label="View mode selection"> <fieldset class="flex items-center space-x-2 bg-gray-100 rounded-lg p-1">
<legend class="sr-only">View mode selection</legend>
<button hx-get="{% url 'parks:park_list' %}?view_mode=grid{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}" <button hx-get="{% url 'parks:park_list' %}?view_mode=grid{% if request.GET.search %}&search={{ request.GET.search }}{% endif %}"
hx-target="#park-results" hx-target="#park-results"
hx-push-url="true" hx-push-url="true"

View File

@@ -1,6 +1,10 @@
import requests import requests
from decimal import Decimal, ROUND_DOWN from decimal import Decimal, ROUND_DOWN
from typing import Any, Optional, cast, Literal from typing import Any, Optional, cast, Literal
# Constants for error messages
REQUIRED_FIELDS_ERROR = "Please correct the errors below. Required fields are marked with an asterisk (*)."
from django.views.generic import DetailView, ListView, CreateView, UpdateView from django.views.generic import DetailView, ListView, CreateView, UpdateView
from decimal import InvalidOperation from decimal import InvalidOperation
from django.shortcuts import get_object_or_404, render from django.shortcuts import get_object_or_404, render
@@ -408,14 +412,7 @@ class ParkCreateView(LoginRequiredMixin, CreateView):
messages.success( messages.success(
self.request, self.request,
"Your park submission has been sent for review. " "Your park submission has been sent for review. "
"You will be notified when it is approved.", "You will be notified when it is approved."
)
return HttpResponseRedirect(reverse("parks:park_list"))
def form_invalid(self, form: ParkForm) -> HttpResponse:
messages.error(
self.request,
"Please correct the errors below. Required fields are marked with an asterisk (*).",
) )
for field, errors in form.errors.items(): for field, errors in form.errors.items():
for error in errors: for error in errors:
@@ -551,7 +548,7 @@ class ParkUpdateView(LoginRequiredMixin, UpdateView):
def form_invalid(self, form: ParkForm) -> HttpResponse: def form_invalid(self, form: ParkForm) -> HttpResponse:
messages.error( messages.error(
self.request, self.request,
"Please correct the errors below. Required fields are marked with an asterisk (*).", REQUIRED_FIELDS_ERROR
) )
for field, errors in form.errors.items(): for field, errors in form.errors.items():
for error in errors: for error in errors:
@@ -734,7 +731,7 @@ class ParkAreaDetailView(
def form_invalid(self, form: ParkForm) -> HttpResponse: def form_invalid(self, form: ParkForm) -> HttpResponse:
messages.error( messages.error(
self.request, self.request,
"Please correct the errors below. Required fields are marked with an asterisk (*).", REQUIRED_FIELDS_ERROR,
) )
for field, errors in form.errors.items(): for field, errors in form.errors.items():
for error in errors: for error in errors:
@@ -872,7 +869,7 @@ class ParkUpdateView(LoginRequiredMixin, UpdateView):
def form_invalid(self, form: ParkForm) -> HttpResponse: def form_invalid(self, form: ParkForm) -> HttpResponse:
messages.error( messages.error(
self.request, self.request,
"Please correct the errors below. Required fields are marked with an asterisk (*).", REQUIRED_FIELDS_ERROR,
) )
for field, errors in form.errors.items(): for field, errors in form.errors.items():
for error in errors: for error in errors: