Refactor the get_detailed_services so that the start and end date are not defaulted to None.

Set the start and end date to today's date if they are not set in the request.args
This commit is contained in:
Rebecca Law
2016-12-29 13:50:41 +00:00
parent 1de022f005
commit 0ec84ff5e8
2 changed files with 15 additions and 12 deletions

View File

@@ -1,4 +1,5 @@
import itertools import itertools
from datetime import datetime
from flask import ( from flask import (
jsonify, jsonify,
@@ -64,15 +65,16 @@ def get_services():
detailed = request.args.get('detailed') == 'True' detailed = request.args.get('detailed') == 'True'
user_id = request.args.get('user_id', None) user_id = request.args.get('user_id', None)
include_from_test_key = request.args.get('include_from_test_key', 'True') != 'False' include_from_test_key = request.args.get('include_from_test_key', 'True') != 'False'
# If start and end date are not set in the request.args, we are expecting today's stats. # If start and end date are not set, we are expecting today's stats.
start_date = request.args.get('start_date', None) start_date = request.args.get('start_date', datetime.utcnow().date())
end_date = request.args.get('end_date', None) end_date = request.args.get('end_date', datetime.utcnow().date())
if user_id: if user_id:
services = dao_fetch_all_services_by_user(user_id, only_active) services = dao_fetch_all_services_by_user(user_id, only_active)
elif detailed: elif detailed:
return jsonify(data=get_detailed_services(only_active, include_from_test_key=include_from_test_key, return jsonify(data=get_detailed_services(start_date=start_date, end_date=end_date,
start_date=start_date, end_date=end_date)) only_active=only_active, include_from_test_key=include_from_test_key
))
else: else:
services = dao_fetch_all_services(only_active) services = dao_fetch_all_services(only_active)
data = service_schema.dump(services, many=True).data data = service_schema.dump(services, many=True).data
@@ -274,14 +276,14 @@ def get_detailed_service(service_id, today_only=False):
return detailed_service_schema.dump(service).data return detailed_service_schema.dump(service).data
def get_detailed_services(only_active=False, include_from_test_key=True, start_date=None, end_date=None): def get_detailed_services(start_date, end_date, only_active=False, include_from_test_key=True):
services = {service.id: service for service in dao_fetch_all_services(only_active)} services = {service.id: service for service in dao_fetch_all_services(only_active)}
if start_date: if start_date == datetime.utcnow().date():
stats = dao_fetch_todays_stats_for_all_services(include_from_test_key=include_from_test_key)
else:
stats = fetch_stats_by_date_range_for_all_services(start_date=start_date, stats = fetch_stats_by_date_range_for_all_services(start_date=start_date,
end_date=end_date, end_date=end_date,
include_from_test_key=include_from_test_key) include_from_test_key=include_from_test_key)
else:
stats = dao_fetch_todays_stats_for_all_services(include_from_test_key=include_from_test_key)
for service_id, rows in itertools.groupby(stats, lambda x: x.service_id): for service_id, rows in itertools.groupby(stats, lambda x: x.service_id):
services[service_id].statistics = statistics.format_statistics(rows) services[service_id].statistics = statistics.format_statistics(rows)

View File

@@ -1305,7 +1305,7 @@ def test_get_detailed_services_groups_by_service(notify_db, notify_db_session):
create_sample_notification(notify_db, notify_db_session, service=service_1, status='delivered') create_sample_notification(notify_db, notify_db_session, service=service_1, status='delivered')
create_sample_notification(notify_db, notify_db_session, service=service_1, status='created') create_sample_notification(notify_db, notify_db_session, service=service_1, status='created')
data = get_detailed_services() data = get_detailed_services(start_date=datetime.utcnow().date(), end_date=datetime.utcnow().date())
data = sorted(data, key=lambda x: x['name']) data = sorted(data, key=lambda x: x['name'])
assert len(data) == 2 assert len(data) == 2
@@ -1329,7 +1329,8 @@ def test_get_detailed_services_includes_services_with_no_notifications(notify_db
create_sample_notification(notify_db, notify_db_session, service=service_1) create_sample_notification(notify_db, notify_db_session, service=service_1)
data = get_detailed_services() data = get_detailed_services(start_date=datetime.utcnow().date(),
end_date=datetime.utcnow().date())
data = sorted(data, key=lambda x: x['name']) data = sorted(data, key=lambda x: x['name'])
assert len(data) == 2 assert len(data) == 2
@@ -1353,7 +1354,7 @@ def test_get_detailed_services_only_includes_todays_notifications(notify_db, not
create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 12, 0)) create_sample_notification(notify_db, notify_db_session, created_at=datetime(2015, 10, 10, 12, 0))
with freeze_time('2015-10-10T12:00:00'): with freeze_time('2015-10-10T12:00:00'):
data = get_detailed_services() data = get_detailed_services(start_date=datetime.utcnow().date(), end_date=datetime.utcnow().date())
data = sorted(data, key=lambda x: x['id']) data = sorted(data, key=lambda x: x['id'])
assert len(data) == 1 assert len(data) == 1