mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 13:11:08 -05:00
add category views for each type of ride, add ride designers
This commit is contained in:
@@ -6,15 +6,79 @@ from django.db.models import Q
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib import messages
|
||||
from django.http import JsonResponse, HttpResponseRedirect
|
||||
from django.http import JsonResponse, HttpResponseRedirect, Http404
|
||||
from django.db.models import Count
|
||||
from .models import Ride, RollerCoasterStats
|
||||
from .forms import RideForm
|
||||
from parks.models import Park
|
||||
from core.views import SlugRedirectMixin
|
||||
from moderation.mixins import EditSubmissionMixin, PhotoSubmissionMixin, HistoryMixin
|
||||
from moderation.models import EditSubmission
|
||||
from media.models import Photo
|
||||
|
||||
class SingleCategoryListView(ListView):
|
||||
model = Ride
|
||||
template_name = 'rides/ride_category_list.html'
|
||||
context_object_name = 'categories'
|
||||
|
||||
def get_category_code(self):
|
||||
category = self.kwargs.get('category')
|
||||
if not category:
|
||||
raise Http404("Category not found")
|
||||
return category
|
||||
|
||||
def get_queryset(self):
|
||||
category_code = self.get_category_code()
|
||||
category_name = dict(Ride.CATEGORY_CHOICES)[category_code]
|
||||
|
||||
rides = Ride.objects.filter(category=category_code).select_related(
|
||||
'park', 'manufacturer'
|
||||
).order_by('name')
|
||||
|
||||
return {category_name: rides} if rides.exists() else {}
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
category_code = self.get_category_code()
|
||||
category_name = dict(Ride.CATEGORY_CHOICES)[category_code]
|
||||
context['title'] = f'All {category_name}s'
|
||||
context['category_code'] = category_code
|
||||
return context
|
||||
|
||||
class ParkSingleCategoryListView(ListView):
|
||||
model = Ride
|
||||
template_name = 'rides/ride_category_list.html'
|
||||
context_object_name = 'categories'
|
||||
|
||||
def setup(self, request, *args, **kwargs):
|
||||
super().setup(request, *args, **kwargs)
|
||||
self.park = get_object_or_404(Park, slug=self.kwargs['park_slug'])
|
||||
|
||||
def get_category_code(self):
|
||||
category = self.kwargs.get('category')
|
||||
if not category:
|
||||
raise Http404("Category not found")
|
||||
return category
|
||||
|
||||
def get_queryset(self):
|
||||
category_code = self.get_category_code()
|
||||
category_name = dict(Ride.CATEGORY_CHOICES)[category_code]
|
||||
|
||||
rides = Ride.objects.filter(
|
||||
park=self.park,
|
||||
category=category_code
|
||||
).select_related('manufacturer').order_by('name')
|
||||
|
||||
return {category_name: rides} if rides.exists() else {}
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['park'] = self.park
|
||||
category_code = self.get_category_code()
|
||||
category_name = dict(Ride.CATEGORY_CHOICES)[category_code]
|
||||
context['title'] = f'{category_name}s at {self.park.name}'
|
||||
context['category_code'] = category_code
|
||||
return context
|
||||
|
||||
class RideCreateView(LoginRequiredMixin, CreateView):
|
||||
model = Ride
|
||||
form_class = RideForm
|
||||
|
||||
Reference in New Issue
Block a user