Files
notifications-admin/app/main/views/platform_admin.py

49 lines
1.6 KiB
Python
Raw Normal View History

from datetime import datetime
import pytz
2016-05-24 15:52:44 +01:00
from flask import render_template
from flask_login import login_required
2016-05-24 15:52:44 +01:00
2016-05-26 14:36:23 +01:00
from app import statistics_api_client, service_api_client
2016-05-24 15:52:44 +01:00
from app.main import main
from app.utils import user_has_permissions
2016-05-26 14:36:23 +01:00
from app.statistics_utils import sum_of_statistics, add_rates_to
2016-05-24 15:52:44 +01:00
@main.route("/platform-admin")
@login_required
@user_has_permissions(admin_override=True)
def platform_admin():
return render_template(
'views/platform-admin.html',
**get_statistics()
2016-05-24 15:52:44 +01:00
)
def get_statistics():
day = datetime.now(tz=pytz.timezone('Europe/London')).date()
all_stats = statistics_api_client.get_statistics_for_all_services_for_day(day)['data']
services = service_api_client.get_services()['data']
service_stats = format_stats_by_service(all_stats, services)
return {
'global_stats': add_rates_to(sum_of_statistics(all_stats)),
'service_stats': service_stats
}
def format_stats_by_service(all_stats, services):
services = {service['id']: service for service in services}
return [
{
'id': stats['service'],
'name': services[stats['service']]['name'],
'sending': (
(stats['sms_requested'] - stats['sms_delivered'] - stats['sms_failed']) +
(stats['emails_requested'] - stats['emails_delivered'] - stats['emails_failed'])
),
'delivered': stats['sms_delivered'] + stats['emails_delivered'],
'failed': stats['sms_failed'] + stats['emails_failed']
}
for stats in all_stats
]