From 490ca8e55781af98e25b27cfe5f1134b9b4f80c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81bastiaan=20Versteeg?= Date: Fri, 1 Mar 2019 11:16:34 +0100 Subject: [PATCH 1/3] Fix name of management command minimising data --- .../commands/{datamininimisation.py => dataminimisation.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename website/members/management/commands/{datamininimisation.py => dataminimisation.py} (100%) diff --git a/website/members/management/commands/datamininimisation.py b/website/members/management/commands/dataminimisation.py similarity index 100% rename from website/members/management/commands/datamininimisation.py rename to website/members/management/commands/dataminimisation.py -- GitLab From 7b919dfbaae73dbe518dc919c46f652bae485406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81bastiaan=20Versteeg?= Date: Fri, 1 Mar 2019 11:16:48 +0100 Subject: [PATCH 2/3] Add tests for failing data minimising code --- website/members/tests/test_services.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/website/members/tests/test_services.py b/website/members/tests/test_services.py index 1176cc2f..a60a19ba 100644 --- a/website/members/tests/test_services.py +++ b/website/members/tests/test_services.py @@ -275,3 +275,26 @@ class DataMinimisationTest(TestCase): self.membership.save() processed = services.execute_data_minimisation(True) self.assertEqual(len(processed), 0) + self.membership.until = timezone.now().replace( + year=2018, month=9, day=1) + self.membership.save() + with self.subTest('Newer year membership after expired one'): + m = Membership.objects.create( + user=self.member, + type=Membership.MEMBER, + since=timezone.now().replace(year=2018, month=9, day=10), + until=timezone.now().replace(year=2019, month=8, day=31), + ) + processed = services.execute_data_minimisation(True) + self.assertEqual(len(processed), 0) + m.delete() + with self.subTest('Newer study membership after expired one'): + m = Membership.objects.create( + user=self.member, + type=Membership.MEMBER, + since=timezone.now().replace(year=2018, month=9, day=10), + until=None + ) + processed = services.execute_data_minimisation(True) + self.assertEqual(len(processed), 0) + m.delete() -- GitLab From 8435de490d1a19c9a42153bf278a98aeaad0e0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81bastiaan=20Versteeg?= Date: Fri, 1 Mar 2019 17:48:42 +0100 Subject: [PATCH 3/3] Replace filter by exclude of current members --- website/members/services.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/members/services.py b/website/members/services.py index c94fc8eb..d80fdf74 100644 --- a/website/members/services.py +++ b/website/members/services.py @@ -173,8 +173,8 @@ def execute_data_minimisation(dry_run=False): :return: list of processed members """ members = (Member.objects - .filter(Q(membership__until__isnull=False) | - Q(membership__until__lte=timezone.now().date())) + .exclude(Q(membership__until__isnull=True) | + Q(membership__until__gt=timezone.now().date())) .distinct() .prefetch_related('membership_set', 'profile')) deletion_period = timezone.now().date() - timezone.timedelta(days=31) -- GitLab