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:
pacnpal
2025-06-25 20:30:02 -04:00
parent 401449201c
commit de05a5abda
35 changed files with 3598 additions and 380 deletions

View File

@@ -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