From 95d00e777d41bfba27b21b775b1487ffc6a685f9 Mon Sep 17 00:00:00 2001 From: Dirk Doesburg Date: Wed, 10 Jul 2024 20:34:21 +0200 Subject: [PATCH] Fix potentially incorrectly deleting old paid registrations/renewals (#3736) While this should be impossible in practice already, this ensures that no registations/renewals are deleted *outside of dataminimisation* that were actually paid/completed. This makes it more certain that invoices for paid registrations are not accidentally getting deleted. --- website/registrations/tasks.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/website/registrations/tasks.py b/website/registrations/tasks.py index 5fac815b9..45e197b03 100644 --- a/website/registrations/tasks.py +++ b/website/registrations/tasks.py @@ -17,22 +17,25 @@ def minimise_registrations(): @shared_task def notify_old_entries(): - # delete entries w updated_at 1 month ago and created_at 3m ago - # notify (and update updated_at) entries w updated_at 1 month ago - - Registration.objects.filter( + """Delete very old entries and send a reminder to board for less old entries.""" + Registration.objects.exclude( + status__in=(Registration.STATUS_COMPLETED, Registration.STATUS_REJECTED) + ).filter( + payment=None, updated_at__lt=timezone.now() - timedelta(days=30), created_at__lt=timezone.now() - timedelta(days=90), ).delete() - Renewal.objects.filter( + Renewal.objects.exclude( + status__in=(Renewal.STATUS_COMPLETED, Renewal.STATUS_REJECTED) + ).filter( + payment=None, updated_at__lt=timezone.now() - timedelta(days=30), created_at__lt=timezone.now() - timedelta(days=90), ).delete() - for registration in Registration.objects.filter( - updated_at__lt=timezone.now() - timedelta(days=30) - ): - # send email + for registration in Registration.objects.exclude( + status__in=(Registration.STATUS_COMPLETED, Registration.STATUS_REJECTED) + ).filter(payment=None, updated_at__lt=timezone.now() - timedelta(days=30)): emails.send_reminder_open_registration(registration) registration.updated_at = timezone.now() registration.save()