mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 05:31:09 -05:00
Refactor park listing templates: implement grid and list view modes, enhance search results rendering, and improve error handling in search functionality
This commit is contained in:
@@ -55,7 +55,7 @@ def search_parks(request: HttpRequest) -> HttpResponse:
|
||||
try:
|
||||
search_query = request.GET.get('search', '').strip()
|
||||
if not search_query:
|
||||
return HttpResponse('') # Return empty response for empty query
|
||||
return HttpResponse('') # Keep empty string for clearing search results
|
||||
|
||||
queryset = (
|
||||
Park.objects.select_related('owner')
|
||||
@@ -74,19 +74,15 @@ def search_parks(request: HttpRequest) -> HttpResponse:
|
||||
|
||||
parks = park_filter.qs[:8] # Limit to 8 suggestions
|
||||
|
||||
if not parks:
|
||||
return HttpResponse(
|
||||
'<div class="p-4 text-sm text-gray-500">No parks found matching your search.</div>'
|
||||
)
|
||||
|
||||
response = render(request, "parks/partials/park_list_item.html", {
|
||||
"object_list": parks # Use object_list to match template's for loop
|
||||
response = render(request, "parks/park_list.html", {
|
||||
"parks": parks
|
||||
})
|
||||
response['HX-Trigger'] = 'searchComplete'
|
||||
return response
|
||||
|
||||
except Exception as e:
|
||||
response = render(request, "parks/partials/park_list_item.html", {
|
||||
response = render(request, "parks/park_list.html", {
|
||||
"parks": [],
|
||||
"error": f"Error performing search: {str(e)}"
|
||||
})
|
||||
response['HX-Trigger'] = 'searchError'
|
||||
@@ -183,7 +179,13 @@ class ParkListView(HTMXFilterableMixin, ListView):
|
||||
context_object_name = "parks"
|
||||
filter_class = ParkFilter
|
||||
paginate_by = 20
|
||||
|
||||
|
||||
def get_template_names(self) -> list[str]:
|
||||
"""Override to use same template for HTMX and regular requests"""
|
||||
if self.request.htmx:
|
||||
return ["parks/partials/park_list_item.html"]
|
||||
return [self.template_name]
|
||||
|
||||
def get_queryset(self) -> QuerySet[Park]:
|
||||
try:
|
||||
return (
|
||||
@@ -209,14 +211,16 @@ class ParkListView(HTMXFilterableMixin, ListView):
|
||||
|
||||
def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
|
||||
try:
|
||||
return super().get_context_data(**kwargs)
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['results_template'] = "parks/partials/park_list_item.html"
|
||||
return context
|
||||
except Exception as e:
|
||||
messages.error(self.request, f"Error applying filters: {str(e)}")
|
||||
context = {
|
||||
return {
|
||||
"filter": self.filterset,
|
||||
"error": "Unable to apply filters. Please try adjusting your criteria."
|
||||
"error": "Unable to apply filters. Please try adjusting your criteria.",
|
||||
"results_template": "parks/partials/park_list_item.html"
|
||||
}
|
||||
return context
|
||||
|
||||
|
||||
class ParkDetailView(
|
||||
|
||||
Reference in New Issue
Block a user