mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 12:31:22 -05:00
35 lines
1.0 KiB
Python
35 lines
1.0 KiB
Python
from django.db.models.signals import post_save, post_delete
|
|
from django.dispatch import receiver
|
|
from django.db.models import Q
|
|
|
|
from apps.rides.models import Ride
|
|
from .models import Park
|
|
|
|
|
|
def update_park_ride_counts(park):
|
|
"""Update ride_count and coaster_count for a park"""
|
|
operating_rides = Q(status="OPERATING")
|
|
|
|
# Count total operating rides
|
|
ride_count = park.rides.filter(operating_rides).count()
|
|
|
|
# Count total operating roller coasters
|
|
coaster_count = park.rides.filter(operating_rides, category="RC").count()
|
|
|
|
# Update park counts
|
|
Park.objects.filter(id=park.id).update(
|
|
ride_count=ride_count, coaster_count=coaster_count
|
|
)
|
|
|
|
|
|
@receiver(post_save, sender=Ride)
|
|
def ride_saved(sender, instance, **kwargs):
|
|
"""Update park counts when a ride is saved"""
|
|
update_park_ride_counts(instance.park)
|
|
|
|
|
|
@receiver(post_delete, sender=Ride)
|
|
def ride_deleted(sender, instance, **kwargs):
|
|
"""Update park counts when a ride is deleted"""
|
|
update_park_ride_counts(instance.park)
|