diff --git a/app/formatters.py b/app/formatters.py index 377667083..f62d23f88 100644 --- a/app/formatters.py +++ b/app/formatters.py @@ -10,7 +10,7 @@ import ago import dateutil import humanize import pytz -from flask import Markup, url_for +from flask import Markup, current_app, url_for from notifications_utils.field import Field from notifications_utils.formatters import make_quotes_smart from notifications_utils.formatters import nl2br as utils_nl2br @@ -91,7 +91,7 @@ def get_human_day(time, date_prefix=''): # Add 1 minute to transform 00:00 into ‘midnight today’ instead of ‘midnight tomorrow’ time = parse_naive_dt(time) date = (convert_utc_to_local_timezone(time) - timedelta(minutes=1)).date() - now = datetime.utcnow() + now = datetime.now(current_app.config['PY_TIMEZONE']) if date == (now + timedelta(days=1)).date(): return 'tomorrow' diff --git a/app/main/forms.py b/app/main/forms.py index 8452be2ad..6da0c4a19 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -75,7 +75,7 @@ from app.utils.user_permissions import all_ui_permissions, permission_options def get_time_value_and_label(future_time): return ( - future_time.replace(tzinfo=None).isoformat(), + future_time.astimezone(pytz.utc).replace(tzinfo=None).isoformat(), '{} at {} ET'.format( get_human_day(future_time.astimezone(current_app.config['PY_TIMEZONE'])), get_human_time(future_time.astimezone(current_app.config['PY_TIMEZONE'])) @@ -96,9 +96,9 @@ def get_human_time(time): def get_human_day(time, prefix_today_with='T'): # Add 1 hour to get ‘midnight today’ instead of ‘midnight tomorrow’ time = (time - timedelta(hours=1)).strftime('%A') - if time == datetime.utcnow().strftime('%A'): + if time == datetime.now(current_app.config['PY_TIMEZONE']).strftime('%A'): return '{}oday'.format(prefix_today_with) - if time == (datetime.utcnow() + timedelta(days=1)).strftime('%A'): + if time == (datetime.now(current_app.config['PY_TIMEZONE']) + timedelta(days=1)).strftime('%A'): return 'Tomorrow' return time diff --git a/tests/app/main/forms/test_choose_time_form.py b/tests/app/main/forms/test_choose_time_form.py index c1c0b409c..36ea63976 100644 --- a/tests/app/main/forms/test_choose_time_form.py +++ b/tests/app/main/forms/test_choose_time_form.py @@ -11,21 +11,21 @@ def test_form_contains_next_24h(notify_admin): # Friday assert choices[0] == ('', 'Now') - assert choices[1] == ('2016-01-01T12:00:00', 'Today at noon ET') - assert choices[13] == ('2016-01-02T00:00:00', 'Today at midnight ET') + assert choices[1] == ('2016-01-01T17:00:00', 'Today at noon ET') + assert choices[13] == ('2016-01-02T05:00:00', 'Today at midnight ET') # Saturday - assert choices[14] == ('2016-01-02T01:00:00', 'Tomorrow at 1am ET') - assert choices[37] == ('2016-01-03T00:00:00', 'Tomorrow at midnight ET') + assert choices[14] == ('2016-01-02T06:00:00', 'Tomorrow at 1am ET') + assert choices[37] == ('2016-01-03T05:00:00', 'Tomorrow at midnight ET') # Sunday - assert choices[38] == ('2016-01-03T01:00:00', 'Sunday at 1am ET') + assert choices[38] == ('2016-01-03T06:00:00', 'Sunday at 1am ET') # Monday - assert choices[62] == ('2016-01-04T01:00:00', 'Monday at 1am ET') - assert choices[80] == ('2016-01-04T19:00:00', 'Monday at 7pm ET') - assert choices[84] == ('2016-01-04T23:00:00', 'Monday at 11pm ET') - assert choices[85] == ('2016-01-05T00:00:00', 'Monday at midnight ET') + assert choices[62] == ('2016-01-04T06:00:00', 'Monday at 1am ET') + assert choices[80] == ('2016-01-05T00:00:00', 'Monday at 7pm ET') + assert choices[84] == ('2016-01-05T04:00:00', 'Monday at 11pm ET') + assert choices[85] == ('2016-01-05T05:00:00', 'Monday at midnight ET') with pytest.raises(IndexError): assert choices[