from django.http import HttpRequest, HttpResponse, JsonResponse from django.shortcuts import render from django.views.generic import TemplateView from django.urls import reverse from .filters import ParkFilter from .forms import ParkSearchForm from .querysets import get_base_park_queryset class ParkSearchView(TemplateView): """View for handling park search with autocomplete.""" template_name = "parks/park_list.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['search_form'] = ParkSearchForm(self.request.GET) # Initialize filter with current querystring queryset = get_base_park_queryset() filter_instance = ParkFilter(self.request.GET, queryset=queryset) context['filter'] = filter_instance # Apply search if park ID selected via autocomplete park_id = self.request.GET.get('park') if park_id: queryset = filter_instance.qs.filter(id=park_id) else: queryset = filter_instance.qs # Handle view mode context['view_mode'] = self.request.GET.get('view_mode', 'grid') context['parks'] = queryset return context def suggest_parks(request: HttpRequest) -> HttpResponse: """Legacy endpoint for old search UI - redirects to autocomplete.""" query = request.GET.get('search', '').strip() if query: return JsonResponse({ 'redirect': f"{reverse('parks:park_list')}?park_name={query}" }) return HttpResponse('')