mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-01 07:35:34 -05:00
Endpoint for reading notification stats for a given day.
This commit is contained in:
@@ -1,13 +1,22 @@
|
||||
from datetime import (date, timedelta)
|
||||
from datetime import (
|
||||
date,
|
||||
timedelta,
|
||||
datetime
|
||||
)
|
||||
|
||||
from flask import (
|
||||
Blueprint,
|
||||
jsonify,
|
||||
request
|
||||
request,
|
||||
current_app
|
||||
)
|
||||
|
||||
from app import DATE_FORMAT
|
||||
|
||||
from app.dao.notifications_dao import (
|
||||
dao_get_notification_statistics_for_service,
|
||||
dao_get_7_day_agg_notification_statistics_for_service
|
||||
dao_get_7_day_agg_notification_statistics_for_service,
|
||||
dao_get_notification_statistics_for_service_and_day
|
||||
)
|
||||
from app.schemas import (
|
||||
notifications_statistics_schema,
|
||||
@@ -47,6 +56,28 @@ def get_all_notification_statistics_for_service(service_id):
|
||||
return jsonify(data=data)
|
||||
|
||||
|
||||
@notifications_statistics.route('/day/<day>', methods=['GET'])
|
||||
def get_notification_statistics_for_service_for_day(service_id, day):
|
||||
|
||||
try:
|
||||
datetime.strptime(day, DATE_FORMAT)
|
||||
except ValueError:
|
||||
raise InvalidRequest('Invalid date {}'.format(day), status_code=400)
|
||||
|
||||
service_stats = dao_get_notification_statistics_for_service_and_day(
|
||||
service_id,
|
||||
day
|
||||
)
|
||||
|
||||
if not service_stats:
|
||||
message = 'No statistics found for service id: {} on day: {} '.format(service_id, day)
|
||||
errors = {'not found': [message]}
|
||||
raise InvalidRequest(errors, status_code=404)
|
||||
|
||||
data = notifications_statistics_schema.dump(service_stats).data
|
||||
return jsonify(data=data)
|
||||
|
||||
|
||||
@notifications_statistics.route('/seven_day_aggregate')
|
||||
def get_notification_statistics_for_service_seven_day_aggregate(service_id):
|
||||
data = week_aggregate_notification_statistics_schema.load(request.args).data
|
||||
|
||||
Reference in New Issue
Block a user