mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-11 17:38:50 -04:00
Merge pull request #2663 from alphagov/adding_support_for_new_api_template_statistics_response
Add support for new template statistics API response
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import calendar
|
||||
from datetime import datetime
|
||||
from functools import partial
|
||||
from itertools import groupby
|
||||
|
||||
from flask import (
|
||||
Response,
|
||||
@@ -265,16 +266,25 @@ def get_inbox_partials(service_id):
|
||||
)}
|
||||
|
||||
|
||||
def aggregate_usage(template_statistics, sort_key='count'):
|
||||
return sorted(
|
||||
template_statistics,
|
||||
key=lambda template_statistic: template_statistic[sort_key],
|
||||
reverse=True
|
||||
)
|
||||
def aggregate_template_usage(template_statistics, sort_key='count'):
|
||||
templates = []
|
||||
template_statistics = [s for s in template_statistics if s.get("status") != "cancelled"]
|
||||
for k, v in groupby(sorted(template_statistics, key=lambda x: x['template_id']), key=lambda x: x['template_id']):
|
||||
template_stats = list(v)
|
||||
|
||||
templates.append({
|
||||
"template_id": k,
|
||||
"template_name": template_stats[0]['template_name'],
|
||||
"template_type": template_stats[0]['template_type'],
|
||||
"is_precompiled_letter": template_stats[0]['is_precompiled_letter'],
|
||||
"count": sum(s['count'] for s in template_stats)
|
||||
})
|
||||
|
||||
return sorted(templates, key=lambda x: x[sort_key], reverse=True)
|
||||
|
||||
|
||||
def get_dashboard_partials(service_id):
|
||||
template_statistics = aggregate_usage(
|
||||
template_statistics = aggregate_template_usage(
|
||||
template_statistics_client.get_template_statistics_for_service(service_id, limit_days=7)
|
||||
)
|
||||
|
||||
|
||||
@@ -35,19 +35,22 @@ stub_template_stats = [
|
||||
'template_type': 'sms',
|
||||
'template_name': 'one',
|
||||
'template_id': 'id-1',
|
||||
'count': 100
|
||||
'count': 100,
|
||||
'is_precompiled_letter': False
|
||||
},
|
||||
{
|
||||
'template_type': 'email',
|
||||
'template_name': 'two',
|
||||
'template_id': 'id-2',
|
||||
'count': 200
|
||||
'count': 200,
|
||||
'is_precompiled_letter': False
|
||||
},
|
||||
{
|
||||
'template_type': 'letter',
|
||||
'template_name': 'three',
|
||||
'template_id': 'id-3',
|
||||
'count': 300
|
||||
'count': 300,
|
||||
'is_precompiled_letter': False
|
||||
},
|
||||
{
|
||||
'template_type': 'letter',
|
||||
@@ -1033,8 +1036,8 @@ def test_route_for_service_permissions(
|
||||
|
||||
|
||||
def test_aggregate_template_stats():
|
||||
from app.main.views.dashboard import aggregate_usage
|
||||
expected = aggregate_usage(copy.deepcopy(stub_template_stats))
|
||||
from app.main.views.dashboard import aggregate_template_usage
|
||||
expected = aggregate_template_usage(copy.deepcopy(stub_template_stats))
|
||||
|
||||
assert len(expected) == 4
|
||||
assert expected[0]['template_name'] == 'four'
|
||||
|
||||
@@ -2273,7 +2273,7 @@ def mock_get_template_statistics(mocker, service_one, fake_uuid):
|
||||
"template_name": template['name'],
|
||||
"template_type": template['template_type'],
|
||||
"template_id": template['id'],
|
||||
"day": "2016-04-04"
|
||||
"is_precompiled_letter": False
|
||||
}
|
||||
|
||||
def _get_stats(service_id, limit_days=None):
|
||||
|
||||
Reference in New Issue
Block a user