diff --git a/home/models.py b/home/models.py index a6bf57f9..bd287111 100644 --- a/home/models.py +++ b/home/models.py @@ -1,5 +1,7 @@ from __future__ import annotations +import datetime + from django.conf import settings from django.core.mail import send_mail from django.db import models @@ -14,10 +16,10 @@ from wagtail.models import Page from wagtail.snippets.models import register_snippet -from .managers import EventQuerySet -from .managers import SessionMembershipQuerySet from home.forms import SignUpPage +from .managers import EventQuerySet, SessionMembershipQuerySet + def sign_up_forms(context): return { @@ -195,10 +197,12 @@ def __str__(self): def is_accepting_applications(self): """Determine if the current date is within the application window""" - return ( - self.application_start_date.date() - <= timezone.now().date() - <= self.application_end_date.date() + aoe_early_timezone = datetime.timezone(datetime.timedelta(hours=12)) + aoe_late_timezone = datetime.timezone(datetime.timedelta(hours=-12)) + today_early_aoe = datetime.datetime.now(tz=aoe_early_timezone).date() + today_late_aoe = datetime.datetime.now(tz=aoe_late_timezone).date() + return (self.application_start_date.date() <= today_early_aoe) and ( + today_late_aoe <= self.application_end_date.date() ) def get_absolute_url(self): diff --git a/home/tests/test_models.py b/home/tests/test_models.py index 0d6bac84..fc99dbdd 100644 --- a/home/tests/test_models.py +++ b/home/tests/test_models.py @@ -23,6 +23,10 @@ def test_is_accepting_applications(self): with freeze_time("2023-10-15"): self.assertFalse(self.session.is_accepting_applications()) + with freeze_time("2023-10-15 12:00:00"): + # In UTC, so this is the 16th somewhere in the world + self.assertTrue(self.session.is_accepting_applications()) + with freeze_time("2023-10-16"): self.assertTrue(self.session.is_accepting_applications()) @@ -30,4 +34,9 @@ def test_is_accepting_applications(self): self.assertTrue(self.session.is_accepting_applications()) with freeze_time("2023-11-16"): + # In UTC, so is the 15th still somewhere in the world + self.assertTrue(self.session.is_accepting_applications()) + + with freeze_time("2023-11-16 12:00:00"): + # No longer 15th AoE self.assertFalse(self.session.is_accepting_applications())