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

42 lines
1.4 KiB
Python
Raw Normal View History

from datetime import datetime, timedelta
from itertools import groupby
from operator import itemgetter
from statistics import mean
import pytz
from flask import render_template
from app import performance_dashboard_api_client, status_api_client
from app.main import main
2023-11-16 12:24:27 -08:00
from app.utils.csv import get_user_preferred_timezone
@main.route("/performance")
def performance():
preferred_tz = pytz.timezone(get_user_preferred_timezone())
stats = performance_dashboard_api_client.get_performance_dashboard_stats(
start_date=(datetime.now(preferred_tz) - timedelta(days=7)).date(),
end_date=datetime.now(preferred_tz).date(),
)
stats["organizations_using_notify"] = sorted(
[
{
"organization_name": organization_name or "No organization",
"count_of_live_services": len(list(group)),
}
2023-07-12 12:09:44 -04:00
for organization_name, group in groupby(
stats["services_using_notify"],
itemgetter("organization_name"),
)
],
key=itemgetter("organization_name"),
)
stats["average_percentage_under_10_seconds"] = mean(
[row["percentage_under_10_seconds"] for row in stats["processing_time"]] or [0]
)
stats["count_of_live_services_and_organizations"] = (
status_api_client.get_count_of_live_services_and_organizations()
)
2023-11-16 12:24:27 -08:00
return render_template("views/performance.html", **stats)