Fixed timezone conversion

This commit is contained in:
alexjanousekGSA
2025-08-14 12:38:22 -04:00
parent 518466dcd2
commit 2c82c25a1d
3 changed files with 19 additions and 16 deletions

View File

@@ -191,9 +191,9 @@ def convert_report_date_to_preferred_timezone(db_date_str_in_utc):
utc_date_obj = utc_date_obj.astimezone(pytz.utc)
preferred_timezone = pytz.timezone(get_user_preferred_timezone())
preferred_date_obj = utc_date_obj.astimezone(preferred_timezone)
preferred_tz_created_at = preferred_date_obj.strftime("%Y-%m-%d %I:%M:%S %p")
preferred_tz_created_at = preferred_date_obj.strftime("%Y-%m-%d %H:%M:%S")
return f"{preferred_tz_created_at} {get_user_preferred_timezone()}"
return preferred_tz_created_at
def get_user_preferred_timezone():

View File

@@ -90,14 +90,14 @@ def get_notifications_csv_mock(
None,
[
"Phone Number,Template,Sent by,Batch File,Carrier Response,Status,Time,Carrier\n",
"8005555555,foo,,,Did not like it,Delivered,1943-04-19 08:00:00 AM US/Eastern,AT&T Mobility\r\n",
"8005555555,foo,,,Did not like it,Delivered,1943-04-19 08:00:00,AT&T Mobility\r\n",
],
),
(
"Anne Example",
[
"Phone Number,Template,Sent by,Batch File,Carrier Response,Status,Time,Carrier\n",
"8005555555,foo,Anne Example,,Did not like it,Delivered,1943-04-19 08:00:00 AM US/Eastern,AT&T Mobility\r\n", # noqa
"8005555555,foo,Anne Example,,Did not like it,Delivered,1943-04-19 08:00:00,AT&T Mobility\r\n", # noqa
],
),
],
@@ -145,7 +145,7 @@ def test_generate_notifications_csv_without_job(
"bar.csv",
"Did not like it",
"Delivered",
"1943-04-19 08:00:00 AM US/Eastern",
"1943-04-19 08:00:00",
"AT&T Mobility",
],
),
@@ -174,7 +174,7 @@ def test_generate_notifications_csv_without_job(
"bar.csv",
"Did not like it",
"Delivered",
"1943-04-19 08:00:00 AM US/Eastern",
"1943-04-19 08:00:00",
"AT&T Mobility",
"🐜",
"🐝",
@@ -206,7 +206,7 @@ def test_generate_notifications_csv_without_job(
"bar.csv",
"Did not like it",
"Delivered",
"1943-04-19 08:00:00 AM US/Eastern",
"1943-04-19 08:00:00",
"AT&T Mobility",
"🐜,🐜",
"🐝,🐝",
@@ -385,4 +385,4 @@ def test_get_errors_for_csv(
def test_convert_report_date_to_preferred_timezone():
original = "2023-11-16 05:00:00"
altered = convert_report_date_to_preferred_timezone(original)
assert altered == "2023-11-16 12:00:00 AM US/Eastern"
assert altered == "2023-11-16 00:00:00"

View File

@@ -17,7 +17,8 @@ def test_convert_s3_csv_timestamps_with_real_format():
) as mock_convert:
def mock_conversion(timestamp):
return f"{timestamp} US/Eastern"
# Just return the timestamp as-is for testing
return timestamp
mock_convert.side_effect = mock_conversion
@@ -31,8 +32,8 @@ def test_convert_s3_csv_timestamps_with_real_format():
assert mock_convert.call_count == 2
mock_convert.assert_any_call("2024-03-15 17:19:00")
mock_convert.assert_any_call("2024-03-15 20:30:00")
assert "2024-03-15 17:19:00 US/Eastern" in full_result
assert "2024-03-15 20:30:00 US/Eastern" in full_result
assert "2024-03-15 17:19:00" in full_result
assert "2024-03-15 20:30:00" in full_result
def test_convert_s3_csv_handles_empty_csv():
@@ -56,7 +57,7 @@ def test_convert_s3_csv_handles_bytes():
with patch(
"app.utils.s3_csv.convert_report_date_to_preferred_timezone"
) as mock_convert:
mock_convert.return_value = "2024-01-15 03:30:00 PM US/Eastern"
mock_convert.return_value = "2024-01-15 15:30:00"
result = list(convert_s3_csv_timestamps(csv_bytes))
assert len(result) == 2
@@ -73,14 +74,14 @@ def test_convert_s3_csv_handles_malformed_dates():
) as mock_convert:
mock_convert.side_effect = [
Exception("Invalid date"),
"2024-01-15 04:45:00 PM US/Eastern",
"2024-01-15 16:45:00",
]
result = list(convert_s3_csv_timestamps(csv_content))
full_result = "".join(result)
assert "INVALID_DATE" in full_result
assert "2024-01-15 04:45:00 PM US/Eastern" in full_result
assert "2024-01-15 16:45:00" in full_result
def test_finds_time_column_dynamically():
@@ -109,5 +110,7 @@ def test_actual_timezone_conversion():
result = convert_report_date_to_preferred_timezone("2024-01-15 20:30:00")
assert "03:30:00 PM" in result or "15:30:00 PM" in result
assert "US/Eastern" in result
# Should be in 24-hour format without AM/PM or timezone
assert "15:30:00" in result
assert "PM" not in result
assert "US/Eastern" not in result