refactor: Rename launch_type to propulsion_system across the codebase

This commit is contained in:
pacnpal
2025-09-18 21:01:13 -04:00
parent 516c847377
commit d5cd6ad0a3
21 changed files with 207 additions and 92 deletions

View File

@@ -290,8 +290,8 @@ class SmartRideLoader:
if 'track_material' in filters and filters['track_material']:
q_objects &= Q(coaster_stats__track_material__in=filters['track_material'])
if 'launch_type' in filters and filters['launch_type']:
q_objects &= Q(coaster_stats__launch_type__in=filters['launch_type'])
if 'propulsion_system' in filters and filters['propulsion_system']:
q_objects &= Q(coaster_stats__propulsion_system__in=filters['propulsion_system'])
# Roller coaster height filters
if 'min_height_ft' in filters and filters['min_height_ft']:
@@ -429,7 +429,7 @@ class SmartRideLoader:
'track_material': stats.track_material,
'roller_coaster_type': stats.roller_coaster_type,
'max_drop_height_ft': float(stats.max_drop_height_ft) if stats.max_drop_height_ft else None,
'launch_type': stats.launch_type,
'propulsion_system': stats.propulsion_system,
'train_style': stats.train_style,
'trains_count': stats.trains_count,
'cars_per_train': stats.cars_per_train,
@@ -495,9 +495,9 @@ class SmartRideLoader:
count=models.Count('ride')
).exclude(track_material__isnull=True).order_by('track_material'))
launch_types_data = list(RollerCoasterStats.objects.values('launch_type').annotate(
propulsion_systems_data = list(RollerCoasterStats.objects.values('propulsion_system').annotate(
count=models.Count('ride')
).exclude(launch_type__isnull=True).order_by('launch_type'))
).exclude(propulsion_system__isnull=True).order_by('propulsion_system'))
# Convert to frontend-expected format with value/label/count
categories = [
@@ -536,13 +536,13 @@ class SmartRideLoader:
for item in track_materials_data
]
launch_types = [
propulsion_systems = [
{
'value': item['launch_type'],
'label': self._get_launch_type_label(item['launch_type']),
'value': item['propulsion_system'],
'label': self._get_propulsion_system_label(item['propulsion_system']),
'count': item['count']
}
for item in launch_types_data
for item in propulsion_systems_data
]
# Convert other data to expected format
@@ -633,7 +633,7 @@ class SmartRideLoader:
'statuses': statuses,
'roller_coaster_types': roller_coaster_types,
'track_materials': track_materials,
'launch_types': launch_types,
'propulsion_systems': propulsion_systems,
'parks': parks,
'park_areas': park_areas,
'manufacturers': manufacturers,
@@ -746,6 +746,7 @@ class SmartRideLoader:
'BOBSLED': 'Bobsled',
'PIPELINE': 'Pipeline',
'FOURTH_DIMENSION': '4th Dimension',
'FAMILY': 'Family',
}
if rc_type in rc_type_labels:
return rc_type_labels[rc_type]
@@ -764,9 +765,9 @@ class SmartRideLoader:
else:
raise ValueError(f"Unknown track material: {material}")
def _get_launch_type_label(self, launch_type: str) -> str:
"""Convert launch type to human-readable label."""
launch_labels = {
def _get_propulsion_system_label(self, propulsion_system: str) -> str:
"""Convert propulsion system to human-readable label."""
propulsion_labels = {
'CHAIN': 'Chain Lift',
'LSM': 'Linear Synchronous Motor',
'LIM': 'Linear Induction Motor',
@@ -774,9 +775,10 @@ class SmartRideLoader:
'PNEUMATIC': 'Pneumatic Launch',
'CABLE': 'Cable Lift',
'FLYWHEEL': 'Flywheel Launch',
'NONE': 'No Launch System',
'GRAVITY': 'Gravity',
'NONE': 'No Propulsion System',
}
if launch_type in launch_labels:
return launch_labels[launch_type]
if propulsion_system in propulsion_labels:
return propulsion_labels[propulsion_system]
else:
raise ValueError(f"Unknown launch type: {launch_type}")
raise ValueError(f"Unknown propulsion system: {propulsion_system}")

View File

@@ -60,7 +60,7 @@ class RideSearchService:
"inversions_range",
"track_material",
"coaster_type",
"launch_type",
"propulsion_system",
],
"company": ["manufacturer_roles", "designer_roles", "founded_date_range"],
}
@@ -434,14 +434,14 @@ class RideSearchService:
rollercoasterstats__roller_coaster_type__in=types
)
# Launch type filter (multi-select)
if filters.get("launch_type"):
launch_types = (
filters["launch_type"]
if isinstance(filters["launch_type"], list)
else [filters["launch_type"]]
# Propulsion system filter (multi-select)
if filters.get("propulsion_system"):
propulsion_systems = (
filters["propulsion_system"]
if isinstance(filters["propulsion_system"], list)
else [filters["propulsion_system"]]
)
queryset = queryset.filter(rollercoasterstats__launch_type__in=launch_types)
queryset = queryset.filter(rollercoasterstats__propulsion_system__in=propulsion_systems)
return queryset
@@ -589,7 +589,7 @@ class RideSearchService:
"inversions_range": "Inversions",
"track_material": "Track Material",
"coaster_type": "Coaster Type",
"launch_type": "Launch Type",
"propulsion_system": "Propulsion System",
"manufacturer_roles": "Manufacturer Roles",
"designer_roles": "Designer Roles",
"founded_date_range": "Founded Date",