Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion strr-api/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "strr-api"
version = "0.3.23"
version = "0.3.24"
description = ""
authors = ["thorwolpert <thor@wolpert.ca>"]
license = "BSD 3-Clause"
Expand Down
4 changes: 2 additions & 2 deletions strr-api/src/strr_api/services/application_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
from datetime import datetime, time, timedelta, timezone
from typing import Optional

import pytz
from flask import current_app

from strr_api.enums.enum import ApplicationType, PaymentStatus, RegistrationStatus
Expand All @@ -49,6 +48,7 @@
from strr_api.services.gcp_storage_service import GCPStorageService
from strr_api.services.registration_service import RegistrationService
from strr_api.services.user_service import UserService
from strr_api.utils.date_util import DateUtil

APPLICATION_TERMINAL_STATES = [
Application.Status.FULL_REVIEW_APPROVED,
Expand Down Expand Up @@ -386,7 +386,7 @@ def send_notice_of_consideration(application: Application, content: str, reviewe
notice_of_consideration.content = content
notice_of_consideration.application_id = application.id
notice_of_consideration.start_date = datetime.combine(
datetime.now(pytz.timezone("America/Vancouver")) + timedelta(days=1), time(0, 1, 0)
DateUtil.now_as_legislation_timezone() + timedelta(days=1), time(0, 1, 0)
)
days = current_app.config.get("NOC_EXPIRY_DAYS", 8)
notice_of_consideration.end_date = notice_of_consideration.start_date + timedelta(days=int(days))
Expand Down
4 changes: 2 additions & 2 deletions strr-api/src/strr_api/services/registration_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
import traceback
from datetime import date, datetime, time, timedelta, timezone

import pytz
from dateutil.relativedelta import relativedelta
from flask import current_app, render_template
from weasyprint import HTML
Expand Down Expand Up @@ -86,6 +85,7 @@
from strr_api.services.gcp_storage_service import GCPStorageService
from strr_api.services.snapshot_service import SnapshotService
from strr_api.services.user_service import UserService
from strr_api.utils.date_util import DateUtil

logger = logging.getLogger("api")

Expand Down Expand Up @@ -1068,7 +1068,7 @@ def send_notice_of_consideration(registration: Registration, content: str, revie
notice_of_consideration.content = content
notice_of_consideration.registration_id = registration.id
notice_of_consideration.start_date = datetime.combine(
datetime.now(pytz.timezone("America/Vancouver")) + timedelta(days=1), time(0, 1, 0)
DateUtil.now_as_legislation_timezone() + timedelta(days=1), time(0, 1, 0)
)
days = current_app.config.get("NOC_EXPIRY_DAYS", 8)
notice_of_consideration.end_date = notice_of_consideration.start_date + timedelta(days=int(days))
Expand Down
10 changes: 7 additions & 3 deletions strr-api/src/strr_api/utils/date_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@
# limitations under the License.
"""Date utilities."""
from datetime import datetime

import pytz
from zoneinfo import ZoneInfo


class DateUtil:
Expand All @@ -25,7 +24,12 @@ class DateUtil:
@staticmethod
def as_legislation_timezone(date_time: datetime) -> datetime:
"""Return a datetime adjusted to the legislation timezone."""
return date_time.astimezone(pytz.timezone(DateUtil.LEGISLATIVE_TIMEZONE))
return date_time.astimezone(ZoneInfo(DateUtil.LEGISLATIVE_TIMEZONE))

@staticmethod
def now_as_legislation_timezone() -> datetime:
"""Return the current datetime adjusted to the legislation timezone."""
return datetime.now(ZoneInfo(DateUtil.LEGISLATIVE_TIMEZONE))

@staticmethod
def format_as_string(date_time: datetime) -> str:
Expand Down
23 changes: 23 additions & 0 deletions strr-api/tests/unit/utils/test_date_util.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from datetime import datetime, timezone
from zoneinfo import ZoneInfo

from strr_api.utils.date_util import DateUtil


def test_as_legislation_timezone_uses_iana_vancouver_timezone():
date_time = datetime(2027, 1, 15, 12, 0, 0, tzinfo=timezone.utc)

result = DateUtil.as_legislation_timezone(date_time)

assert result == date_time.astimezone(ZoneInfo("America/Vancouver"))
assert result.tzinfo.key == "America/Vancouver"


def test_format_as_string_uses_iana_vancouver_timezone():
date_time = datetime(2027, 1, 15, 12, 0, 0, tzinfo=timezone.utc)
vancouver_date_time = date_time.astimezone(ZoneInfo("America/Vancouver"))
hour = vancouver_date_time.strftime("%I").lstrip("0")
am_pm = vancouver_date_time.strftime("%p").lower()
expected = vancouver_date_time.strftime(f"%B %-d, %Y at {hour}:%M {am_pm} Pacific time")

assert DateUtil.format_as_string(date_time) == expected
Loading