mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 15:31:08 -05:00
42 lines
1.8 KiB
Python
42 lines
1.8 KiB
Python
from django.db.models.signals import post_save, post_delete
|
|
from django.dispatch import receiver
|
|
from parks.models import Park
|
|
from rides.models import Ride
|
|
from .models import Company, Manufacturer
|
|
|
|
@receiver([post_save, post_delete], sender=Park)
|
|
def update_company_stats(sender, instance, **kwargs):
|
|
"""Update company statistics when a park is added, modified, or deleted."""
|
|
if instance.owner:
|
|
# Update total parks
|
|
total_parks = Park.objects.filter(owner=instance.owner).count()
|
|
total_rides = Ride.objects.filter(park__owner=instance.owner).count()
|
|
|
|
Company.objects.filter(id=instance.owner.id).update(
|
|
total_parks=total_parks,
|
|
total_rides=total_rides
|
|
)
|
|
|
|
@receiver([post_save, post_delete], sender=Ride)
|
|
def update_manufacturer_stats(sender, instance, **kwargs):
|
|
"""Update manufacturer statistics when a ride is added, modified, or deleted."""
|
|
if instance.manufacturer:
|
|
# Update total rides and roller coasters
|
|
total_rides = Ride.objects.filter(manufacturer=instance.manufacturer).count()
|
|
total_roller_coasters = Ride.objects.filter(
|
|
manufacturer=instance.manufacturer,
|
|
category='RC'
|
|
).count()
|
|
|
|
Manufacturer.objects.filter(id=instance.manufacturer.id).update(
|
|
total_rides=total_rides,
|
|
total_roller_coasters=total_roller_coasters
|
|
)
|
|
|
|
@receiver(post_save, sender=Ride)
|
|
def update_company_ride_stats(sender, instance, **kwargs):
|
|
"""Update company ride statistics when a ride is added or modified."""
|
|
if instance.park and instance.park.owner:
|
|
total_rides = Ride.objects.filter(park__owner=instance.park.owner).count()
|
|
Company.objects.filter(id=instance.park.owner.id).update(total_rides=total_rides)
|