mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-24 12:11:08 -05:00
Add secret management guide, client-side performance monitoring, and search accessibility enhancements
- Introduced a comprehensive Secret Management Guide detailing best practices, secret classification, development setup, production management, rotation procedures, and emergency protocols. - Implemented a client-side performance monitoring script to track various metrics including page load performance, paint metrics, layout shifts, and memory usage. - Enhanced search accessibility with keyboard navigation support for search results, ensuring compliance with WCAG standards and improving user experience.
This commit is contained in:
@@ -56,6 +56,12 @@ from .models.rankings import RankingSnapshot, RideRanking
|
||||
from .models.rides import Ride, RideModel
|
||||
from .services.ranking_service import RideRankingService
|
||||
|
||||
import logging
|
||||
|
||||
from apps.core.logging import log_exception, log_business_event
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ParkContextRequired:
|
||||
"""
|
||||
@@ -244,7 +250,20 @@ class RideCreateView(
|
||||
def form_valid(self, form):
|
||||
"""Handle form submission using RideFormMixin for entity suggestions."""
|
||||
self.handle_entity_suggestions(form)
|
||||
return super().form_valid(form)
|
||||
response = super().form_valid(form)
|
||||
log_business_event(
|
||||
logger,
|
||||
event_type="ride_created",
|
||||
message=f"Ride created: {self.object.name}",
|
||||
context={
|
||||
"ride_id": self.object.id,
|
||||
"ride_name": self.object.name,
|
||||
"park_id": self.park.id,
|
||||
"park_name": self.park.name,
|
||||
},
|
||||
request=self.request,
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
class RideUpdateView(
|
||||
@@ -300,7 +319,20 @@ class RideUpdateView(
|
||||
def form_valid(self, form):
|
||||
"""Handle form submission using RideFormMixin for entity suggestions."""
|
||||
self.handle_entity_suggestions(form)
|
||||
return super().form_valid(form)
|
||||
response = super().form_valid(form)
|
||||
log_business_event(
|
||||
logger,
|
||||
event_type="ride_updated",
|
||||
message=f"Ride updated: {self.object.name}",
|
||||
context={
|
||||
"ride_id": self.object.id,
|
||||
"ride_name": self.object.name,
|
||||
"park_id": self.park.id,
|
||||
"park_name": self.park.name,
|
||||
},
|
||||
request=self.request,
|
||||
)
|
||||
return response
|
||||
|
||||
|
||||
class RideListView(ListView):
|
||||
@@ -547,6 +579,7 @@ class RideSearchView(ListView):
|
||||
|
||||
# Process search form
|
||||
form = RideSearchForm(self.request.GET)
|
||||
search_term = self.request.GET.get("ride", "").strip()
|
||||
if form.is_valid():
|
||||
ride = form.cleaned_data.get("ride")
|
||||
if ride:
|
||||
@@ -554,10 +587,17 @@ class RideSearchView(ListView):
|
||||
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)
|
||||
|
||||
result_count = queryset.count()
|
||||
logger.info(
|
||||
"Ride search executed",
|
||||
extra={
|
||||
"query": search_term,
|
||||
"result_count": result_count,
|
||||
},
|
||||
)
|
||||
return queryset
|
||||
|
||||
def get_template_names(self):
|
||||
@@ -596,10 +636,18 @@ class RideRankingsView(ListView):
|
||||
min_riders = self.request.GET.get("min_riders")
|
||||
if min_riders:
|
||||
try:
|
||||
min_riders = int(min_riders)
|
||||
queryset = queryset.filter(mutual_riders_count__gte=min_riders)
|
||||
except ValueError:
|
||||
pass
|
||||
min_riders_int = int(min_riders)
|
||||
queryset = queryset.filter(mutual_riders_count__gte=min_riders_int)
|
||||
except (ValueError, TypeError) as e:
|
||||
log_exception(
|
||||
logger,
|
||||
e,
|
||||
context={
|
||||
"operation": "ride_rankings_min_riders",
|
||||
"min_riders": min_riders,
|
||||
},
|
||||
request=self.request,
|
||||
)
|
||||
|
||||
return queryset
|
||||
|
||||
|
||||
Reference in New Issue
Block a user