feat: Implement MFA authentication, add ride statistics model, and update various services, APIs, and tests across the application.

This commit is contained in:
pacnpal
2025-12-28 17:32:53 -05:00
parent aa56c46c27
commit c95f99ca10
452 changed files with 7948 additions and 6073 deletions

View File

@@ -3,16 +3,18 @@ Selectors for park-related data retrieval.
Following Django styleguide pattern for separating data access from business logic.
"""
from typing import Optional, Dict, Any
from django.db.models import QuerySet, Q, Count, Avg, Prefetch
from typing import Any
from django.contrib.gis.geos import Point
from django.contrib.gis.measure import Distance
from django.db.models import Avg, Count, Prefetch, Q, QuerySet
from .models import Park, ParkArea, ParkReview
from apps.rides.models import Ride
from .models import Park, ParkArea, ParkReview
def park_list_with_stats(*, filters: Optional[Dict[str, Any]] = None) -> QuerySet[Park]:
def park_list_with_stats(*, filters: dict[str, Any] | None = None) -> QuerySet[Park]:
"""
Get parks optimized for list display with basic stats.
@@ -116,7 +118,7 @@ def parks_near_location(
)
def park_statistics() -> Dict[str, Any]:
def park_statistics() -> dict[str, Any]:
"""
Get overall park statistics for dashboard/analytics.
@@ -167,9 +169,10 @@ def parks_with_recent_reviews(*, days: int = 30) -> QuerySet[Park]:
Returns:
QuerySet of parks with recent reviews
"""
from django.utils import timezone
from datetime import timedelta
from django.utils import timezone
cutoff_date = timezone.now() - timedelta(days=days)
return (