Revert "update"

This reverts commit 75cc618c2b.
This commit is contained in:
pacnpal
2025-09-21 20:11:00 -04:00
parent 75cc618c2b
commit 540f40e689
610 changed files with 4812 additions and 1715 deletions

View File

@@ -1,158 +0,0 @@
from django.shortcuts import render
from django.views.generic import TemplateView
from django.db.models import Q
from django.core.cache import cache
from apps.parks.models import Park, Company
from apps.rides.models import Ride
from apps.core.analytics import PageView
from django.conf import settings
import os
import secrets
def handler404(request, exception):
return render(request, "404.html", status=404)
def handler500(request):
return render(request, "500.html", status=500)
class HomeView(TemplateView):
template_name = "home.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
# Get stats
context["stats"] = {
"total_parks": Park.objects.count(),
"ride_count": Ride.objects.count(),
"coaster_count": Ride.objects.filter(category="RC").count(),
}
# Try to get trending items from cache first
trending_parks = cache.get("trending_parks")
trending_rides = cache.get("trending_rides")
# If not in cache, get them directly and cache them
if trending_parks is None:
try:
trending_parks = list(
PageView.get_trending_items(Park, hours=24, limit=10)
)
if trending_parks:
cache.set(
"trending_parks", trending_parks, 3600
) # Cache for 1 hour
else:
# Fallback to highest rated parks if no trending data
trending_parks = Park.objects.exclude(
average_rating__isnull=True
).order_by("-average_rating")[:10]
except Exception:
# Fallback to highest rated parks if trending calculation fails
trending_parks = Park.objects.exclude(
average_rating__isnull=True
).order_by("-average_rating")[:10]
if trending_rides is None:
try:
trending_rides = list(
PageView.get_trending_items(Ride, hours=24, limit=10)
)
if trending_rides:
cache.set(
"trending_rides", trending_rides, 3600
) # Cache for 1 hour
else:
# Fallback to highest rated rides if no trending data
trending_rides = Ride.objects.exclude(
average_rating__isnull=True
).order_by("-average_rating")[:10]
except Exception:
# Fallback to highest rated rides if trending calculation fails
trending_rides = Ride.objects.exclude(
average_rating__isnull=True
).order_by("-average_rating")[:10]
# Get highest rated items (mix of parks and rides)
highest_rated_parks = list(
Park.objects.exclude(average_rating__isnull=True).order_by(
"-average_rating"
)[:20]
) # Get more items to randomly select from
highest_rated_rides = list(
Ride.objects.exclude(average_rating__isnull=True).order_by(
"-average_rating"
)[:20]
) # Get more items to randomly select from
# Combine and shuffle highest rated items
all_highest_rated = highest_rated_parks + highest_rated_rides
secrets.SystemRandom().shuffle(all_highest_rated)
# Keep the same context variable names for template compatibility
context["popular_parks"] = trending_parks
context["popular_rides"] = trending_rides
context["highest_rated"] = all_highest_rated[
:10
] # Take first 10 after shuffling
return context
class SearchView(TemplateView):
template_name = "search_results.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
if query := self.request.GET.get("q", "").strip():
# Search parks
context["parks"] = (
Park.objects.filter(
Q(name__icontains=query)
| Q(location__icontains=query)
| Q(description__icontains=query)
)
.select_related("operating_company")
.prefetch_related("photos")[:10]
)
# Search rides
context["rides"] = (
Ride.objects.filter(
Q(name__icontains=query)
| Q(description__icontains=query)
| Q(manufacturer__name__icontains=query)
)
.select_related("park", "coaster_stats")
.prefetch_related("photos")[:10]
)
# Search companies
context["companies"] = Company.objects.filter(
Q(name__icontains=query) | Q(description__icontains=query)
).prefetch_related("operated_parks", "owned_parks")[:10]
return context
def environment_and_settings_view(request):
# Get all environment variables
env_vars = dict(os.environ)
# Get all Django settings as a dictionary
settings_vars = {
setting: getattr(settings, setting)
for setting in dir(settings)
if setting.isupper()
}
return render(
request,
"environment_and_settings.html",
{"env_vars": env_vars, "settings_vars": settings_vars},
)