From c6069e3a6f38fb7167aaf05a60bee04e71ed4fa3 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 8 Dec 2020 16:31:41 +0100 Subject: [PATCH] agendas: anonymize booking according to event date (#49094) --- chrono/agendas/management/commands/anonymize_bookings.py | 3 ++- chrono/agendas/models.py | 2 +- tests/test_agendas.py | 9 ++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/chrono/agendas/management/commands/anonymize_bookings.py b/chrono/agendas/management/commands/anonymize_bookings.py index 4ae6ee4..fed270b 100644 --- a/chrono/agendas/management/commands/anonymize_bookings.py +++ b/chrono/agendas/management/commands/anonymize_bookings.py @@ -29,7 +29,8 @@ class Command(BaseCommand): def handle(self, **options): bookings_to_anonymize = Booking.objects.filter( anonymization_datetime__isnull=True, - creation_datetime__lt=timezone.now() - timedelta(days=1) * F('event__agenda__anonymize_delay'), + event__start_datetime__lt=timezone.now() + - timedelta(days=1) * F('event__agenda__anonymize_delay'), ) bookings_to_anonymize.update( diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py index 4821ffc..cd6658f 100644 --- a/chrono/agendas/models.py +++ b/chrono/agendas/models.py @@ -160,7 +160,7 @@ class Agenda(models.Model): null=True, blank=True, validators=[MinValueValidator(30), MaxValueValidator(1000)], - help_text=_('After this delay, user data contained in bookings will be pruned.'), + help_text=_('User data will be kept for the specified number of days passed the booking date.'), ) real_agendas = models.ManyToManyField( 'self', diff --git a/tests/test_agendas.py b/tests/test_agendas.py index 1b5cfee..80848de 100644 --- a/tests/test_agendas.py +++ b/tests/test_agendas.py @@ -1577,7 +1577,9 @@ def test_anonymize_bookings(freezer): day = datetime.datetime(year=2020, month=1, day=1) freezer.move_to(day) agenda = Agenda.objects.create(label='Agenda', kind='events') - event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10, label='Event') + event = Event.objects.create( + agenda=agenda, start_datetime=now() + datetime.timedelta(days=10), places=10, label='Event' + ) for i in range(5): Booking.objects.create( @@ -1602,6 +1604,11 @@ def test_anonymize_bookings(freezer): agenda.anonymize_delay = 100 agenda.save() + call_command('anonymize_bookings') + # bookings were placed more than 100 days ago but event was only 90 days ago + assert not Booking.objects.filter(anonymization_datetime__isnull=False).exists() + + freezer.move_to(day + datetime.timedelta(days=111)) call_command('anonymize_bookings') assert ( Booking.objects.filter( -- 2.20.1