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
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1import logging
2from datetime import timedelta
4from django.utils import timezone
6from .models import Reimbursement
8logger = logging.getLogger(__name__)
9YEAR = timedelta(days=365)
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 )
22 logger.info(
23 "Deleting %d %s reimbursements", old_reimbursements.count(), verdict
24 )
25 if not dry_run:
26 old_reimbursements.delete()
28 _delete_old_reimbursements(Reimbursement.Verdict.DENIED, years_until_deletion=2)
29 _delete_old_reimbursements(Reimbursement.Verdict.APPROVED, years_until_deletion=7)