mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-22 01:51:08 -05:00
Add advanced search and trending parks features; update frontend dependencies and enhance home page layout
This commit is contained in:
@@ -4,6 +4,7 @@ from apps.core.views.search import (
|
||||
FilterFormView,
|
||||
LocationSearchView,
|
||||
LocationSuggestionsView,
|
||||
AdvancedSearchView,
|
||||
)
|
||||
from apps.rides.views import RideSearchView
|
||||
|
||||
@@ -12,6 +13,7 @@ app_name = "search"
|
||||
urlpatterns = [
|
||||
path("parks/", AdaptiveSearchView.as_view(), name="search"),
|
||||
path("parks/filters/", FilterFormView.as_view(), name="filter_form"),
|
||||
path("advanced/", AdvancedSearchView.as_view(), name="advanced"),
|
||||
path("rides/", RideSearchView.as_view(), name="ride_search"),
|
||||
path("rides/results/", RideSearchView.as_view(), name="ride_search_results"),
|
||||
# Location-aware search
|
||||
|
||||
@@ -176,3 +176,43 @@ class LocationSuggestionsView(TemplateView):
|
||||
return JsonResponse({"suggestions": suggestions})
|
||||
except Exception as e:
|
||||
return JsonResponse({"error": str(e)}, status=500)
|
||||
|
||||
|
||||
class AdvancedSearchView(TemplateView):
|
||||
"""Advanced search view with comprehensive filtering options for both parks and rides"""
|
||||
template_name = "core/search/advanced.html"
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
# Import here to avoid circular imports
|
||||
from apps.parks.filters import ParkFilter
|
||||
from apps.rides.filters import RideFilter
|
||||
from apps.parks.models import Park
|
||||
from apps.rides.models.rides import Ride
|
||||
|
||||
# Initialize filtersets for both parks and rides
|
||||
park_filterset = ParkFilter(self.request.GET, queryset=Park.objects.all())
|
||||
ride_filterset = RideFilter(self.request.GET, queryset=Ride.objects.all())
|
||||
|
||||
# Determine what type of search to show based on request parameters
|
||||
search_type = self.request.GET.get('search_type', 'parks') # Default to parks
|
||||
|
||||
context.update({
|
||||
'page_title': 'Advanced Search',
|
||||
'page_description': 'Find exactly what you\'re looking for with our comprehensive search filters.',
|
||||
'search_type': search_type,
|
||||
'park_filters': park_filterset,
|
||||
'ride_filters': ride_filterset,
|
||||
'park_results': park_filterset.qs if search_type == 'parks' else None,
|
||||
'ride_results': ride_filterset.qs if search_type == 'rides' else None,
|
||||
'has_filters': bool(self.request.GET),
|
||||
})
|
||||
|
||||
return context
|
||||
|
||||
def get_template_names(self):
|
||||
"""Return appropriate template for HTMX requests"""
|
||||
if hasattr(self.request, 'htmx') and self.request.htmx:
|
||||
return ["core/search/partials/advanced_results.html"]
|
||||
return [self.template_name]
|
||||
|
||||
Reference in New Issue
Block a user