mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-01-02 01:47:04 -05:00
feat: Implement initial schema and add various API, service, and management command enhancements across the application.
This commit is contained in:
@@ -13,9 +13,7 @@ from .choices import RIDE_CATEGORIES
|
||||
from .models import Ride, RideModel, RideReview
|
||||
|
||||
|
||||
def ride_list_for_display(
|
||||
*, filters: dict[str, Any] | None = None
|
||||
) -> QuerySet[Ride]:
|
||||
def ride_list_for_display(*, filters: dict[str, Any] | None = None) -> QuerySet[Ride]:
|
||||
"""
|
||||
Get rides optimized for list display with related data.
|
||||
|
||||
@@ -85,9 +83,7 @@ def ride_detail_optimized(*, slug: str, park_slug: str) -> Ride:
|
||||
"park__location",
|
||||
Prefetch(
|
||||
"reviews",
|
||||
queryset=RideReview.objects.select_related("user").filter(
|
||||
is_published=True
|
||||
),
|
||||
queryset=RideReview.objects.select_related("user").filter(is_published=True),
|
||||
),
|
||||
"photos",
|
||||
)
|
||||
@@ -171,9 +167,7 @@ def rides_in_park(*, park_slug: str) -> QuerySet[Ride]:
|
||||
)
|
||||
|
||||
|
||||
def rides_near_location(
|
||||
*, point: Point, distance_km: float = 50, limit: int = 10
|
||||
) -> QuerySet[Ride]:
|
||||
def rides_near_location(*, point: Point, distance_km: float = 50, limit: int = 10) -> QuerySet[Ride]:
|
||||
"""
|
||||
Get rides near a specific geographic location.
|
||||
|
||||
@@ -227,9 +221,7 @@ def ride_search_autocomplete(*, query: str, limit: int = 10) -> QuerySet[Ride]:
|
||||
"""
|
||||
return (
|
||||
Ride.objects.filter(
|
||||
Q(name__icontains=query)
|
||||
| Q(park__name__icontains=query)
|
||||
| Q(manufacturer__name__icontains=query)
|
||||
Q(name__icontains=query) | Q(park__name__icontains=query) | Q(manufacturer__name__icontains=query)
|
||||
)
|
||||
.select_related("park", "manufacturer")
|
||||
.prefetch_related("park__location")
|
||||
@@ -254,16 +246,10 @@ def rides_with_recent_reviews(*, days: int = 30) -> QuerySet[Ride]:
|
||||
cutoff_date = timezone.now() - timedelta(days=days)
|
||||
|
||||
return (
|
||||
Ride.objects.filter(
|
||||
reviews__created_at__gte=cutoff_date, reviews__is_published=True
|
||||
)
|
||||
Ride.objects.filter(reviews__created_at__gte=cutoff_date, reviews__is_published=True)
|
||||
.select_related("park", "manufacturer")
|
||||
.prefetch_related("park__location")
|
||||
.annotate(
|
||||
recent_review_count=Count(
|
||||
"reviews", filter=Q(reviews__created_at__gte=cutoff_date)
|
||||
)
|
||||
)
|
||||
.annotate(recent_review_count=Count("reviews", filter=Q(reviews__created_at__gte=cutoff_date)))
|
||||
.order_by("-recent_review_count")
|
||||
.distinct()
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user