mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-27 10:51:40 -05:00
or param errors to raise invalid data exception. That will cause those responses to be handled in by errors.py, which will log the errors. Set most of schemas to strict mode so that marshmallow will raise exception rather than checking for errors in return tuple from load. Added handler to errors.py for marshmallow validation errors.
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from flask import (
|
|
Blueprint,
|
|
jsonify,
|
|
request
|
|
)
|
|
|
|
from app.dao.notifications_dao import (
|
|
dao_get_template_statistics_for_service,
|
|
dao_get_template_statistics_for_template
|
|
)
|
|
|
|
from app.schemas import template_statistics_schema
|
|
|
|
template_statistics = Blueprint('template-statistics',
|
|
__name__,
|
|
url_prefix='/service/<service_id>/template-statistics')
|
|
|
|
from app.errors import register_errors, InvalidRequest
|
|
|
|
register_errors(template_statistics)
|
|
|
|
|
|
@template_statistics.route('')
|
|
def get_template_statistics_for_service(service_id):
|
|
if request.args.get('limit_days'):
|
|
try:
|
|
limit_days = int(request.args['limit_days'])
|
|
except ValueError as e:
|
|
error = '{} is not an integer'.format(request.args['limit_days'])
|
|
message = {'limit_days': [error]}
|
|
raise InvalidRequest(message, status_code=400)
|
|
else:
|
|
limit_days = None
|
|
stats = dao_get_template_statistics_for_service(service_id, limit_days=limit_days)
|
|
data = template_statistics_schema.dump(stats, many=True).data
|
|
return jsonify(data=data)
|
|
|
|
|
|
@template_statistics.route('/<template_id>')
|
|
def get_template_statistics_for_template_id(service_id, template_id):
|
|
stats = dao_get_template_statistics_for_template(template_id)
|
|
data = template_statistics_schema.dump(stats, many=True).data
|
|
return jsonify(data=data)
|