mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-22 14:51:09 -05:00
- Introduced reusable test utilities in `backend/tests/utils` for FSM transitions, HTMX interactions, and common scenarios. - Added factory functions for creating test submissions, parks, rides, and photo submissions. - Implemented assertion helpers for verifying state changes, toast notifications, and transition logs. - Created comprehensive state machine diagrams for all FSM-enabled models in `docs/STATE_DIAGRAMS.md`, detailing states, transitions, and guard conditions.
96 lines
3.0 KiB
Python
96 lines
3.0 KiB
Python
from django.urls import path
|
|
from . import views
|
|
from apps.core.views.views import FSMTransitionView
|
|
|
|
app_name = "rides"
|
|
|
|
urlpatterns = [
|
|
# Global list views
|
|
path("", views.RideListView.as_view(), name="global_ride_list"),
|
|
# Global category views
|
|
path(
|
|
"roller-coasters/",
|
|
views.SingleCategoryListView.as_view(),
|
|
{"category": "RC"},
|
|
name="global_roller_coasters",
|
|
),
|
|
path(
|
|
"dark-rides/",
|
|
views.SingleCategoryListView.as_view(),
|
|
{"category": "DR"},
|
|
name="global_dark_rides",
|
|
),
|
|
path(
|
|
"flat-rides/",
|
|
views.SingleCategoryListView.as_view(),
|
|
{"category": "FR"},
|
|
name="global_flat_rides",
|
|
),
|
|
path(
|
|
"water-rides/",
|
|
views.SingleCategoryListView.as_view(),
|
|
{"category": "WR"},
|
|
name="global_water_rides",
|
|
),
|
|
path(
|
|
"transports/",
|
|
views.SingleCategoryListView.as_view(),
|
|
{"category": "TR"},
|
|
name="global_transports",
|
|
),
|
|
path(
|
|
"others/",
|
|
views.SingleCategoryListView.as_view(),
|
|
{"category": "OT"},
|
|
name="global_others",
|
|
),
|
|
# Search endpoints (must come before slug patterns)
|
|
path("search/models/", views.search_ride_models, name="search_ride_models"),
|
|
path("search/companies/", views.search_companies, name="search_companies"),
|
|
# HTMX endpoints (must come before slug patterns)
|
|
path("coaster-fields/", views.show_coaster_fields, name="coaster_fields"),
|
|
path(
|
|
"search-suggestions/",
|
|
views.get_search_suggestions,
|
|
name="search_suggestions",
|
|
),
|
|
# Ranking endpoints
|
|
path("rankings/", views.RideRankingsView.as_view(), name="rankings"),
|
|
path(
|
|
"rankings/<slug:ride_slug>/",
|
|
views.RideRankingDetailView.as_view(),
|
|
name="ranking_detail",
|
|
),
|
|
path(
|
|
"rankings/<slug:ride_slug>/history-chart/",
|
|
views.ranking_history_chart,
|
|
name="ranking_history_chart",
|
|
),
|
|
path(
|
|
"rankings/<slug:ride_slug>/comparisons/",
|
|
views.ranking_comparisons,
|
|
name="ranking_comparisons",
|
|
),
|
|
# Company list views
|
|
path("manufacturers/", views.ManufacturerListView.as_view(), name="manufacturer_list"),
|
|
path("designers/", views.DesignerListView.as_view(), name="designer_list"),
|
|
# API endpoints moved to centralized backend/api/v1/rides/ structure
|
|
# Frontend requests to /api/ are proxied to /api/v1/ by Vite
|
|
# Park-specific URLs
|
|
path("create/", views.RideCreateView.as_view(), name="ride_create"),
|
|
path("<slug:ride_slug>/", views.RideDetailView.as_view(), name="ride_detail"),
|
|
path(
|
|
"<slug:ride_slug>/update/",
|
|
views.RideUpdateView.as_view(),
|
|
name="ride_update",
|
|
),
|
|
# FSM transition endpoint for rides
|
|
# URL: /rides/<ride_slug>/transition/<transition_name>/
|
|
path(
|
|
"<slug:slug>/transition/<str:transition_name>/",
|
|
FSMTransitionView.as_view(),
|
|
{"app_label": "rides", "model_name": "ride"},
|
|
name="ride_transition",
|
|
),
|
|
]
|