From 28ef3bfca5e3348347e065f5919ae5e86ff584d9 Mon Sep 17 00:00:00 2001 From: Ernesto Rico Schmidt <ernesto@helsinki.at> Date: Wed, 15 Nov 2023 14:37:36 -0400 Subject: [PATCH] fix: delete timeslots & schedule while deactivating a show Closes: #180 --- program/models.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/program/models.py b/program/models.py index c5aab086..c491fa6c 100644 --- a/program/models.py +++ b/program/models.py @@ -26,6 +26,7 @@ from versatileimagefield.fields import PPOIField, VersatileImageField from django.contrib.auth.models import User from django.db import models from django.db.models import Q, QuerySet +from django.utils import timezone from django.utils.translation import gettext_lazy as _ from program.utils import parse_datetime from steering.settings import THUMBNAIL_SIZES @@ -248,6 +249,20 @@ class Show(models.Model): def __str__(self): return self.name + def save(self, *args, **kwargs): + now = timezone.datetime.now() + today = now.date() + + if self.pk and self.is_active is False: + # deactivating a show means: + # - **delete all* the timeslots that belong to a schedule of this show the after now + # - **update all** the schedules of this show have today as `last_date` + TimeSlot.objects.filter(schedule__show=self, start__gt=now).delete() + self.schedules.filter(Q(last_date__gt=today) | Q(last_date=None)).update( + last_date=today + ) + super().save(*args, **kwargs) + class ShowLink(Link): show = models.ForeignKey(Show, on_delete=models.CASCADE, related_name="links") -- GitLab