Coverage for website/reimbursements/services.py: 43.75%

14 statements  

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

1import logging 

2from datetime import timedelta 

3 

4from django.utils import timezone 

5 

6from .models import Reimbursement 

7 

8logger = logging.getLogger(__name__) 

9YEAR = timedelta(days=365) 

10 

11 

12def execute_data_minimisation(dry_run=False): 

13 def _delete_old_reimbursements( 

14 verdict: Reimbursement.Verdict, 

15 years_until_deletion: int, 

16 ): 

17 old_reimbursements = Reimbursement.objects.filter( 

18 verdict=verdict, 

19 created__lt=timezone.now() - YEAR * years_until_deletion, 

20 ) 

21 

22 logger.info( 

23 "Deleting %d %s reimbursements", old_reimbursements.count(), verdict 

24 ) 

25 if not dry_run: 

26 old_reimbursements.delete() 

27 

28 _delete_old_reimbursements(Reimbursement.Verdict.DENIED, years_until_deletion=2) 

29 _delete_old_reimbursements(Reimbursement.Verdict.APPROVED, years_until_deletion=7)