Files
notifications-api/app/notifications_statistics/rest.py
Chris Hill-Scott d7f6bb9976 Align date range for template + notification stats
We were using two different queries to filter template stats to the past
7 days, plus today.

Since we’re storing both as short dates, we can now use the same query
for both.

0      | 1       | 2         | 3        | 4      | 5        | 6      | 7
-------|---------|-----------|----------|--------|----------|--------|-------
Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday | Monday

So if we are on Monday, the stats should include today, plus everything
back to last Monday.

Previously the template stats query was only going back to the Tuesday.

This should mean the numbers on the dashboard always line up.
2016-04-27 11:11:09 +01:00

38 lines
1.2 KiB
Python

from flask import (
Blueprint,
jsonify,
request
)
from app.dao.notifications_dao import dao_get_notification_statistics_for_service
from app.schemas import notifications_statistics_schema
notifications_statistics = Blueprint(
'notifications-statistics',
__name__, url_prefix='/service/<service_id>/notifications-statistics'
)
from app.errors import register_errors
register_errors(notifications_statistics)
@notifications_statistics.route('', methods=['GET'])
def get_all_notification_statistics_for_service(service_id):
if request.args.get('limit_days'):
try:
statistics = dao_get_notification_statistics_for_service(
service_id=service_id,
limit_days=int(request.args['limit_days'])
)
except ValueError as e:
error = '{} is not an integer'.format(request.args['limit_days'])
current_app.logger.error(error)
return jsonify(result="error", message={'limit_days': [error]}), 400
else:
statistics = dao_get_notification_statistics_for_service(service_id=service_id)
data, errors = notifications_statistics_schema.dump(statistics, many=True)
return jsonify(data=data)