Coverage for website/registrations/tasks.py: 100.00%

21 statements  

« prev     ^ index     » next       coverage.py v7.6.7, created at 2025-08-14 10:31 +0000

1from datetime import timedelta 

2 

3from django.utils import timezone 

4 

5from celery import shared_task 

6 

7from registrations import emails 

8 

9from . import services 

10from .models import Registration, Renewal 

11 

12 

13@shared_task 

14def minimise_registrations(): 

15 services.execute_data_minimisation() 

16 

17 

18@shared_task 

19def notify_old_entries(): 

20 """Delete very old entries and send a reminder to board for less old entries.""" 

21 Registration.objects.exclude( 

22 status__in=(Registration.STATUS_COMPLETED, Registration.STATUS_REJECTED) 

23 ).filter( 

24 payment=None, 

25 updated_at__lt=timezone.now() - timedelta(days=30), 

26 created_at__lt=timezone.now() - timedelta(days=90), 

27 ).delete() 

28 Renewal.objects.exclude( 

29 status__in=(Renewal.STATUS_COMPLETED, Renewal.STATUS_REJECTED) 

30 ).filter( 

31 payment=None, 

32 updated_at__lt=timezone.now() - timedelta(days=30), 

33 created_at__lt=timezone.now() - timedelta(days=90), 

34 ).delete() 

35 

36 for registration in Registration.objects.exclude( 

37 status__in=(Registration.STATUS_COMPLETED, Registration.STATUS_REJECTED) 

38 ).filter(payment=None, updated_at__lt=timezone.now() - timedelta(days=30)): 

39 emails.send_reminder_open_registration(registration) 

40 registration.updated_at = timezone.now() 

41 registration.save() 

42 

43 for renewal in Renewal.objects.exclude( 

44 status__in=(Renewal.STATUS_COMPLETED, Renewal.STATUS_REJECTED) 

45 ).filter(payment=None, updated_at__lt=timezone.now() - timedelta(days=30)): 

46 emails.send_reminder_open_renewal(renewal) 

47 renewal.updated_at = timezone.now() 

48 renewal.save()