mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-04-23 02:30:56 -04:00
Refactor to use shared date comparison function
This means we don’t have to repeatedly do timezone conversions or string to datetime conversions in our business logic.
This commit is contained in:
@@ -16,7 +16,7 @@ from app import user_api_client
|
||||
from app.main import main
|
||||
from app.main.forms import TwoFactorForm
|
||||
from app.models.user import User
|
||||
from app.utils import is_less_than_90_days_ago, redirect_to_sign_in
|
||||
from app.utils import is_less_than_days_ago, redirect_to_sign_in
|
||||
|
||||
|
||||
@main.route('/two-factor-email-sent', methods=['GET'])
|
||||
@@ -70,7 +70,7 @@ def two_factor():
|
||||
form = TwoFactorForm(_check_code)
|
||||
|
||||
if form.validate_on_submit():
|
||||
if is_less_than_90_days_ago(user.email_access_validated_at):
|
||||
if is_less_than_days_ago(user.email_access_validated_at, 90):
|
||||
return log_in_user(user_id)
|
||||
else:
|
||||
user_api_client.send_verify_code(user.id, 'email', None, request.args.get('next'))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import timedelta
|
||||
|
||||
import pytz
|
||||
from notifications_utils.letter_timings import (
|
||||
@@ -6,17 +6,18 @@ from notifications_utils.letter_timings import (
|
||||
get_letter_timings,
|
||||
letter_can_be_cancelled,
|
||||
)
|
||||
from notifications_utils.timezones import (
|
||||
local_timezone,
|
||||
utc_string_to_aware_gmt_datetime,
|
||||
)
|
||||
from notifications_utils.timezones import utc_string_to_aware_gmt_datetime
|
||||
from werkzeug.utils import cached_property
|
||||
|
||||
from app.models import JSONModel, ModelList
|
||||
from app.notify_client.job_api_client import job_api_client
|
||||
from app.notify_client.notification_api_client import notification_api_client
|
||||
from app.notify_client.service_api_client import service_api_client
|
||||
from app.utils import get_letter_printing_statement, set_status_filters
|
||||
from app.utils import (
|
||||
get_letter_printing_statement,
|
||||
is_less_than_days_ago,
|
||||
set_status_filters,
|
||||
)
|
||||
|
||||
|
||||
class Job(JSONModel):
|
||||
@@ -123,11 +124,7 @@ class Job(JSONModel):
|
||||
# must have been created recently enough to not have any
|
||||
# notifications yet
|
||||
return True
|
||||
return (
|
||||
datetime.utcnow().astimezone(local_timezone) - utc_string_to_aware_gmt_datetime(
|
||||
self.processing_started
|
||||
)
|
||||
).days < 1
|
||||
return is_less_than_days_ago(self.processing_started, 1)
|
||||
|
||||
@property
|
||||
def template_id(self):
|
||||
|
||||
@@ -820,10 +820,10 @@ def format_thousands(value):
|
||||
return value
|
||||
|
||||
|
||||
def is_less_than_90_days_ago(date_from_db):
|
||||
return (datetime.utcnow() - datetime.strptime(
|
||||
date_from_db, "%Y-%m-%dT%H:%M:%S.%fZ"
|
||||
)).days < 90
|
||||
def is_less_than_days_ago(date_from_db, number_of_days):
|
||||
return (
|
||||
datetime.utcnow().astimezone(pytz.utc) - parser.parse(date_from_db).astimezone(pytz.utc)
|
||||
).days < number_of_days
|
||||
|
||||
|
||||
def hide_from_search_engines(f):
|
||||
|
||||
@@ -20,7 +20,7 @@ from app.utils import (
|
||||
get_letter_validation_error,
|
||||
get_logo_cdn_domain,
|
||||
get_sample_template,
|
||||
is_less_than_90_days_ago,
|
||||
is_less_than_days_ago,
|
||||
merge_jsonlike,
|
||||
printing_today_or_tomorrow,
|
||||
round_to_significant_figures,
|
||||
@@ -597,10 +597,11 @@ def test_get_letter_validation_error_for_known_errors(
|
||||
@pytest.mark.parametrize("date_from_db, expected_result", [
|
||||
('2019-11-17T11:35:21.726132Z', True),
|
||||
('2019-11-16T11:35:21.726132Z', False),
|
||||
('2019-11-16T11:35:21+0000', False),
|
||||
])
|
||||
@freeze_time('2020-02-14T12:00:00')
|
||||
def test_is_less_than_90_days_ago(date_from_db, expected_result):
|
||||
assert is_less_than_90_days_ago(date_from_db) == expected_result
|
||||
def test_is_less_than_days_ago(date_from_db, expected_result):
|
||||
assert is_less_than_days_ago(date_from_db, 90) == expected_result
|
||||
|
||||
|
||||
@pytest.mark.parametrize("template_type", ["sms", "letter", "email"])
|
||||
|
||||
Reference in New Issue
Block a user