make sure we convert strings to dates before we use them

fixes 500 on platform admin page
This commit is contained in:
Leo Hemsted
2017-01-31 16:12:46 +00:00
parent 3113f49271
commit cd47dbd36b
2 changed files with 40 additions and 3 deletions

View File

@@ -66,9 +66,12 @@ def get_services():
detailed = request.args.get('detailed') == 'True'
user_id = request.args.get('user_id', None)
include_from_test_key = request.args.get('include_from_test_key', 'True') != 'False'
# If start and end date are not set, we are expecting today's stats.
start_date = request.args.get('start_date', datetime.utcnow().date())
end_date = request.args.get('end_date', datetime.utcnow().date())
today = str(datetime.utcnow().date())
start_date = datetime.strptime(request.args.get('start_date', today), '%Y-%m-%d').date()
end_date = datetime.strptime(request.args.get('end_date', today), '%Y-%m-%d').date()
if user_id:
services = dao_fetch_all_services_by_user(user_id, only_active)

View File

@@ -1,6 +1,7 @@
from datetime import datetime, timedelta
from datetime import datetime, timedelta, date
import json
import uuid
from unittest.mock import ANY
import pytest
from flask import url_for
@@ -1269,6 +1270,39 @@ def test_get_services_with_detailed_flag_excluding_from_test_key(notify_api, not
}
def test_get_services_with_detailed_flag_accepts_date_range(client, mocker):
mock_get_detailed_services = mocker.patch('app.service.rest.get_detailed_services', return_value={})
resp = client.get(
url_for('service.get_services', detailed=True, start_date='2001-01-01', end_date='2002-02-02'),
headers=[create_authorization_header()]
)
mock_get_detailed_services.assert_called_once_with(
start_date=date(2001, 1, 1),
end_date=date(2002, 2, 2),
only_active=ANY,
include_from_test_key=ANY
)
assert resp.status_code == 200
@freeze_time('2002-02-02')
def test_get_services_with_detailed_flag_defaults_to_today(client, mocker):
mock_get_detailed_services = mocker.patch('app.service.rest.get_detailed_services', return_value={})
resp = client.get(
url_for('service.get_services', detailed=True),
headers=[create_authorization_header()]
)
mock_get_detailed_services.assert_called_once_with(
start_date=date(2002, 2, 2),
end_date=date(2002, 2, 2),
only_active=ANY,
include_from_test_key=ANY
)
assert resp.status_code == 200
def test_get_detailed_services_groups_by_service(notify_db, notify_db_session):
from app.service.rest import get_detailed_services