mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-09 19:04:33 -04:00
move weekly summary page over to new notifications/weekly endpoint
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import datetime, date, timedelta
|
||||
from collections import namedtuple
|
||||
from itertools import groupby
|
||||
|
||||
import dateutil
|
||||
from flask import (
|
||||
render_template,
|
||||
url_for,
|
||||
@@ -9,7 +10,6 @@ from flask import (
|
||||
jsonify,
|
||||
current_app
|
||||
)
|
||||
|
||||
from flask_login import login_required
|
||||
|
||||
from app.main import main
|
||||
@@ -90,20 +90,10 @@ def usage(service_id):
|
||||
@login_required
|
||||
@user_has_permissions('manage_settings', admin_override=True)
|
||||
def weekly(service_id):
|
||||
|
||||
earliest_date = date(2016, 4, 1) # start of tax year
|
||||
while earliest_date.weekday() != 0: # 0 for monday
|
||||
earliest_date -= timedelta(days=1)
|
||||
|
||||
stats = statistics_api_client.get_weekly_notification_stats(service_id)['data']
|
||||
return render_template(
|
||||
'views/weekly.html',
|
||||
days=(
|
||||
add_rates_to(day) for day in
|
||||
statistics_api_client.get_7_day_aggregate_for_service(
|
||||
service_id,
|
||||
date_from=earliest_date
|
||||
)['data']
|
||||
),
|
||||
days=format_stats_to_list(stats),
|
||||
now=datetime.utcnow()
|
||||
)
|
||||
|
||||
@@ -199,3 +189,22 @@ def calculate_usage(usage):
|
||||
'sms_chargeable': max(0, sms_sent - sms_free_allowance),
|
||||
'sms_rate': sms_rate
|
||||
}
|
||||
|
||||
|
||||
def format_stats_to_list(historical_stats):
|
||||
out = []
|
||||
for week, weekly_stats in historical_stats.items():
|
||||
for stats in weekly_stats.values():
|
||||
stats['failure_rate'] = get_formatted_percentage(stats['failed'], stats['requested'])
|
||||
|
||||
week_start = dateutil.parser.parse(week)
|
||||
week_end = week_start + timedelta(days=6)
|
||||
item = {
|
||||
'week_start': week_start.isoformat(),
|
||||
'week_end': week_end.isoformat(),
|
||||
'week_end_datetime': week_end,
|
||||
}
|
||||
item.update(weekly_stats)
|
||||
out.append(item)
|
||||
|
||||
return sorted(out, key=lambda x: x['week_start'], reverse=True)
|
||||
|
||||
@@ -23,16 +23,8 @@ class StatisticsApiClient(BaseAPIClient):
|
||||
else:
|
||||
raise e
|
||||
|
||||
def get_7_day_aggregate_for_service(self, service_id, date_from=None, week_count=None):
|
||||
params = {}
|
||||
if date_from is not None:
|
||||
params['date_from'] = date_from
|
||||
if week_count is not None:
|
||||
params['week_count'] = week_count
|
||||
return self.get(
|
||||
url='/service/{}/notifications-statistics/seven_day_aggregate'.format(service_id),
|
||||
params=params
|
||||
)
|
||||
def get_weekly_notification_stats(self, service_id):
|
||||
return self.get(url='/service/{}/notifications/weekly'.format(service_id))
|
||||
|
||||
def get_statistics_for_all_services_for_day(self, day):
|
||||
params = {
|
||||
|
||||
@@ -33,16 +33,16 @@
|
||||
{% endif %}
|
||||
{% endcall %}
|
||||
{% call field(align='right') %}
|
||||
{{ item.emails_requested }}
|
||||
{{ item.email.requested }}
|
||||
{% endcall %}
|
||||
{% call field(align='right') %}
|
||||
{{ item.emails_failure_rate }}%
|
||||
{{ item.email.failure_rate }}%
|
||||
{% endcall %}
|
||||
{% call field(align='right') %}
|
||||
{{ item.sms_requested }}
|
||||
{{ item.sms.requested }}
|
||||
{% endcall %}
|
||||
{% call field(align='right') %}
|
||||
{{ item.sms_failure_rate }}%
|
||||
{{ item.sms.failure_rate }}%
|
||||
{% endcall %}
|
||||
{% endcall %}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user