From d1d5536bd82df049d0823c2f607119614edb1395 Mon Sep 17 00:00:00 2001 From: Eli Chadwick Date: Fri, 13 Oct 2023 12:56:31 +0100 Subject: [PATCH] add 90-day grace period for registrations --- amy/extforms/forms.py | 11 +++++------ amy/extforms/tests/test_training_request_form.py | 8 ++++---- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/amy/extforms/forms.py b/amy/extforms/forms.py index c845d2c1e..93cddae5e 100644 --- a/amy/extforms/forms.py +++ b/amy/extforms/forms.py @@ -1,4 +1,4 @@ -from datetime import date +from datetime import date, timedelta from typing import Iterable, cast from captcha.fields import ReCaptchaField @@ -215,11 +215,10 @@ def validate_member_code(self, request: HttpRequest) -> dict: # find relevant membership - may raise Membership.DoesNotExist membership = Membership.objects.get(registration_code=member_code) # confirm that membership is currently active - if ( - not membership.agreement_start - <= date.today() - <= membership.agreement_end - ): + # grace period: 90 days before and after + valid_start = membership.agreement_start - timedelta(days=90) + valid_end = membership.agreement_end + timedelta(days=90) + if not valid_start <= date.today() <= valid_end: errors["member_code"] = ValidationError(error_msg) except Membership.DoesNotExist: errors["member_code"] = ValidationError(error_msg) diff --git a/amy/extforms/tests/test_training_request_form.py b/amy/extforms/tests/test_training_request_form.py index 82a2ef87a..aeb0df0fe 100644 --- a/amy/extforms/tests/test_training_request_form.py +++ b/amy/extforms/tests/test_training_request_form.py @@ -187,10 +187,10 @@ def test_member_code_validation__code_invalid(self): @override_settings(FLAGS={"ENFORCE_MEMBER_CODES": [("boolean", True)]}) def test_member_code_validation__code_inactive_early(self): - # 3: code before membership start date - error on code + # 3: code used >90 days before membership start date - error on code # Arrange self.setUpMembership() - self.membership.agreement_start = date.today() + timedelta(days=1) + self.membership.agreement_start = date.today() + timedelta(days=91) self.membership.save() data = { "review_process": "preapproved", @@ -206,10 +206,10 @@ def test_member_code_validation__code_inactive_early(self): @override_settings(FLAGS={"ENFORCE_MEMBER_CODES": [("boolean", True)]}) def test_member_code_validation__code_inactive_late(self): - # 4: code after membership end date - error on code + # 4: code used >90 days after membership end date - error on code # Arrange self.setUpMembership() - self.membership.agreement_end = date.today() - timedelta(days=1) + self.membership.agreement_end = date.today() - timedelta(days=91) self.membership.save() data = { "review_process": "preapproved",