table with sending/delivered/failed stats for each service today

This commit is contained in:
Leo Hemsted
2016-05-31 11:08:22 +01:00
parent a8c38b7478
commit 9669024f49
5 changed files with 140 additions and 21 deletions

View File

@@ -2,13 +2,12 @@ from datetime import datetime
import pytz
from flask import render_template
from flask_login import login_required, current_user
from flask_login import login_required
from app import statistics_api_client, service_api_client
from app.main import main
from app.utils import user_has_permissions
from app.statistics_utils import sum_of_statistics, add_rates_to
from app.notify_client.api_client import ServicesBrowsableItem
@main.route("/platform-admin")
@@ -17,13 +16,33 @@ from app.notify_client.api_client import ServicesBrowsableItem
def platform_admin():
return render_template(
'views/platform-admin.html',
global_stats=get_global_stats(),
services=[ServicesBrowsableItem(x) for x in
service_api_client.get_services({'user_id': current_user.id})['data']]
**get_statistics()
)
def get_global_stats():
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']
return add_rates_to(sum_of_statistics(all_stats))
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
]