Refactored reports to use pregenerated docs instead (#2831)

* Refactored reports to use pregenerated docs instead

* Fixed e2e test

* Fixed anothr bug

* Cleanup

* Fixed timezone conversion

* Updated ref files

* Updated reference files, refreshed ui/ux for report generation. Buttons toggle on and off based on if report exists

* Fixed linting errors, removed pytz

* Fixed test failure

* e2e test fix

* Speeding up unit tests

* Removed python time library that was causing performance issues with unit tests

* Updated poetry lock

* Unit test improvements

* Made change that ken reccomended
This commit is contained in:
Alex Janousek
2025-08-15 15:02:54 -04:00
committed by GitHub
parent 748c35d2df
commit 8d33f28b76
50 changed files with 632 additions and 204 deletions

View File

@@ -1,7 +1,6 @@
from collections import namedtuple
from datetime import datetime, time, timedelta
import pytz
from zoneinfo import ZoneInfo
from notifications_utils.countries.data import Postage
from notifications_utils.timezones import utc_string_to_aware_gmt_datetime
@@ -19,9 +18,9 @@ CANCELLABLE_JOB_LETTER_STATUSES = [
def set_gmt_hour(day, hour):
return (
day.astimezone(pytz.timezone("Europe/London"))
day.astimezone(ZoneInfo("Europe/London"))
.replace(hour=hour, minute=0)
.astimezone(pytz.utc)
.astimezone(ZoneInfo("UTC"))
)
@@ -91,8 +90,8 @@ def get_letter_timings(upload_time, postage):
printed_by = set_gmt_hour(print_day, hour=15)
now = (
datetime.utcnow()
.replace(tzinfo=pytz.utc)
.astimezone(pytz.timezone("Europe/London"))
.replace(tzinfo=ZoneInfo("UTC"))
.astimezone(ZoneInfo("Europe/London"))
)
return LetterTimings(

View File

@@ -1,9 +1,9 @@
import os
from zoneinfo import ZoneInfo
import pytz
from dateutil import parser
local_timezone = pytz.timezone(os.getenv("TIMEZONE", "America/New_York"))
local_timezone = ZoneInfo(os.getenv("TIMEZONE", "America/New_York"))
def utc_string_to_aware_gmt_datetime(date):
@@ -12,5 +12,5 @@ def utc_string_to_aware_gmt_datetime(date):
Returns an aware local datetime, essentially the time you'd see on your clock
"""
date = parser.parse(date)
forced_utc = date.replace(tzinfo=pytz.utc)
forced_utc = date.replace(tzinfo=ZoneInfo("UTC"))
return forced_utc.astimezone(local_timezone)