major changes, including tailwind v4

This commit is contained in:
pacnpal
2025-08-15 12:24:20 -04:00
parent f6c8e0e25c
commit da7c7e3381
261 changed files with 22783 additions and 10465 deletions

View File

@@ -9,16 +9,14 @@ from django.contrib import messages
from django.http import HttpRequest, HttpResponse, Http404
from django.db.models import Count
from .models import (
Ride, RollerCoasterStats, RideModel, RideEvent,
CATEGORY_CHOICES
Ride, RollerCoasterStats, RideModel,
CATEGORY_CHOICES, Company
)
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 manufacturers.models import Manufacturer
from designers.models import Designer
class ParkContextRequired:
@@ -64,11 +62,6 @@ class RideDetailView(HistoryMixin, DetailView):
context['park_slug'] = self.kwargs['park_slug']
context['park'] = self.object.park
# Add history records
context['history'] = RideEvent.objects.filter(
pgh_obj_id=self.object.id
).order_by('-pgh_created_at')
return context
@@ -107,9 +100,9 @@ class RideCreateView(LoginRequiredMixin, ParkContextRequired, CreateView):
if manufacturer_name and not form.cleaned_data.get('manufacturer'):
EditSubmission.objects.create(
user=self.request.user,
content_type=ContentType.objects.get_for_model(Manufacturer),
content_type=ContentType.objects.get_for_model(Company),
submission_type="CREATE",
changes={"name": manufacturer_name},
changes={"name": manufacturer_name, "roles": ["MANUFACTURER"]},
)
# Check for new designer
@@ -117,9 +110,9 @@ class RideCreateView(LoginRequiredMixin, ParkContextRequired, CreateView):
if designer_name and not form.cleaned_data.get('designer'):
EditSubmission.objects.create(
user=self.request.user,
content_type=ContentType.objects.get_for_model(Designer),
content_type=ContentType.objects.get_for_model(Company),
submission_type="CREATE",
changes={"name": designer_name},
changes={"name": designer_name, "roles": ["DESIGNER"]},
)
# Check for new ride model
@@ -179,9 +172,9 @@ class RideUpdateView(LoginRequiredMixin, ParkContextRequired, EditSubmissionMixi
if manufacturer_name and not form.cleaned_data.get('manufacturer'):
EditSubmission.objects.create(
user=self.request.user,
content_type=ContentType.objects.get_for_model(Manufacturer),
content_type=ContentType.objects.get_for_model(Company),
submission_type="CREATE",
changes={"name": manufacturer_name}
changes={"name": manufacturer_name, "roles": ["MANUFACTURER"]}
)
# Check for new designer
@@ -189,9 +182,9 @@ class RideUpdateView(LoginRequiredMixin, ParkContextRequired, EditSubmissionMixi
if designer_name and not form.cleaned_data.get('designer'):
EditSubmission.objects.create(
user=self.request.user,
content_type=ContentType.objects.get_for_model(Designer),
content_type=ContentType.objects.get_for_model(Company),
submission_type="CREATE",
changes={"name": designer_name}
changes={"name": designer_name, "roles": ["DESIGNER"]}
)
# Check for new ride model
@@ -314,40 +307,26 @@ class SingleCategoryListView(ListView):
ParkSingleCategoryListView = SingleCategoryListView
def search_manufacturers(request: HttpRequest) -> HttpResponse:
"""Search manufacturers and return results for HTMX"""
query = request.GET.get("q", "").strip()
# Show all manufacturers on click, filter on input
manufacturers = Manufacturer.objects.all().order_by("name")
def search_companies(request: HttpRequest) -> HttpResponse:
"""Search companies and return results for HTMX"""
query = request.GET.get("q", "").strip()
role = request.GET.get("role", "").upper()
companies = Company.objects.all().order_by("name")
if role:
companies = companies.filter(roles__contains=[role])
if query:
manufacturers = manufacturers.filter(name__icontains=query)
manufacturers = manufacturers[:10]
companies = companies.filter(name__icontains=query)
companies = companies[:10]
return render(
request,
"rides/partials/manufacturer_search_results.html",
{"manufacturers": manufacturers, "search_term": query},
"rides/partials/company_search_results.html",
{"companies": companies, "search_term": query},
)
def search_designers(request: HttpRequest) -> HttpResponse:
"""Search designers and return results for HTMX"""
query = request.GET.get("q", "").strip()
# Show all designers on click, filter on input
designers = Designer.objects.all().order_by("name")
if query:
designers = designers.filter(name__icontains=query)
designers = designers[:10]
return render(
request,
"rides/partials/designer_search_results.html",
{"designers": designers, "search_term": query},
)
def search_ride_models(request: HttpRequest) -> HttpResponse:
"""Search ride models and return results for HTMX"""
query = request.GET.get("q", "").strip()