mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 16:11:08 -05:00
Add comprehensive audit reports, design assessment, and non-authenticated features testing for ThrillWiki application
- Created critical functionality audit report identifying 7 critical issues affecting production readiness. - Added design assessment report highlighting exceptional design quality and minor cosmetic fixes needed. - Documented non-authenticated features testing results confirming successful functionality and public access. - Implemented ride search form with autocomplete functionality and corresponding templates for search results. - Developed tests for ride autocomplete functionality, ensuring proper filtering and authentication checks.
This commit is contained in:
@@ -4,7 +4,6 @@ from django.shortcuts import get_object_or_404, render
|
||||
from django.urls import reverse
|
||||
from django.db.models import Q, Model
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib import messages
|
||||
from django.http import HttpRequest, HttpResponse, Http404
|
||||
@@ -315,7 +314,6 @@ class SingleCategoryListView(ListView):
|
||||
ParkSingleCategoryListView = SingleCategoryListView
|
||||
|
||||
|
||||
@login_required
|
||||
def search_manufacturers(request: HttpRequest) -> HttpResponse:
|
||||
"""Search manufacturers and return results for HTMX"""
|
||||
query = request.GET.get("q", "").strip()
|
||||
@@ -333,7 +331,6 @@ def search_manufacturers(request: HttpRequest) -> HttpResponse:
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def search_designers(request: HttpRequest) -> HttpResponse:
|
||||
"""Search designers and return results for HTMX"""
|
||||
query = request.GET.get("q", "").strip()
|
||||
@@ -351,7 +348,6 @@ def search_designers(request: HttpRequest) -> HttpResponse:
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def search_ride_models(request: HttpRequest) -> HttpResponse:
|
||||
"""Search ride models and return results for HTMX"""
|
||||
query = request.GET.get("q", "").strip()
|
||||
@@ -432,3 +428,46 @@ def get_search_suggestions(request: HttpRequest) -> HttpResponse:
|
||||
'query': query
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class RideSearchView(ListView):
|
||||
"""View for ride search functionality with HTMX support."""
|
||||
model = Ride
|
||||
template_name = 'search/partials/ride_search_results.html'
|
||||
context_object_name = 'rides'
|
||||
paginate_by = 20
|
||||
|
||||
def get_queryset(self):
|
||||
"""Get filtered rides based on search form."""
|
||||
from search.forms import RideSearchForm
|
||||
|
||||
queryset = Ride.objects.select_related('park').order_by('name')
|
||||
|
||||
# Process search form
|
||||
form = RideSearchForm(self.request.GET)
|
||||
if form.is_valid():
|
||||
ride = form.cleaned_data.get('ride')
|
||||
if ride:
|
||||
# If specific ride selected, return just that ride
|
||||
queryset = queryset.filter(id=ride.id)
|
||||
else:
|
||||
# If no specific ride, filter by search term
|
||||
search_term = self.request.GET.get('ride', '').strip()
|
||||
if search_term:
|
||||
queryset = queryset.filter(name__icontains=search_term)
|
||||
|
||||
return queryset
|
||||
|
||||
def get_template_names(self):
|
||||
"""Return appropriate template based on request type."""
|
||||
if self.request.htmx:
|
||||
return ['search/partials/ride_search_results.html']
|
||||
return ['search/ride_search.html']
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
"""Add search form to context."""
|
||||
from search.forms import RideSearchForm
|
||||
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['search_form'] = RideSearchForm(self.request.GET)
|
||||
return context
|
||||
|
||||
Reference in New Issue
Block a user