first commit

This commit is contained in:
pacnpal
2024-10-28 17:09:57 -04:00
commit 1339baec59
9993 changed files with 1182741 additions and 0 deletions

75
thrillwiki/views.py Normal file
View File

@@ -0,0 +1,75 @@
from django.shortcuts import render
from django.views.generic import TemplateView
from django.db.models import Count, Q
from parks.models import Park
from rides.models import Ride
from companies.models import Company, Manufacturer
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(),
'total_rides': Ride.objects.count(),
'total_roller_coasters': Ride.objects.filter(category='RC').count(),
}
# Get popular parks (based on average rating)
context['popular_parks'] = Park.objects.exclude(
average_rating__isnull=True
).order_by('-average_rating')[:5]
# Get popular rides (based on average rating)
context['popular_rides'] = Ride.objects.exclude(
average_rating__isnull=True
).order_by('-average_rating')[:5]
return context
class SearchView(TemplateView):
template_name = 'search_results.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
query = self.request.GET.get('q', '').strip()
if query:
# Search parks
context['parks'] = Park.objects.filter(
Q(name__icontains=query) |
Q(location__icontains=query) |
Q(description__icontains=query)
).select_related('owner').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(headquarters__icontains=query) |
Q(description__icontains=query)
).prefetch_related('parks')[:10]
# Search manufacturers
context['manufacturers'] = Manufacturer.objects.filter(
Q(name__icontains=query) |
Q(headquarters__icontains=query) |
Q(description__icontains=query)
).prefetch_related('rides')[:10]
return context