def create_global_stats(services): stats = { "email": {"delivered": 0, "failed": 0, "requested": 0}, "sms": {"delivered": 0, "failed": 0, "requested": 0}, } for service in services: for msg_type, status in itertools.product(("sms", "email"), ("delivered", "failed", "requested")): stats[msg_type][status] += service["statistics"][msg_type][status] for stat in stats.values(): stat["failure_rate"] = get_formatted_percentage(stat["failed"], stat["requested"]) return stats
def format_weekly_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) weekly_stats.update({ 'week_start': week, 'week_end': week_end.date().isoformat(), 'week_end_datetime': week_end, }) out.append(weekly_stats) return sorted(out, key=lambda x: x['week_start'], reverse=True)
def get_dashboard_totals(statistics): for msg_type in statistics.values(): msg_type['failed_percentage'] = get_formatted_percentage( msg_type['failed'], msg_type['requested']) msg_type['show_warning'] = float(msg_type['failed_percentage']) > 3 return statistics
def get_dashboard_totals(statistics): for msg_type in statistics.values(): msg_type['failed_percentage'] = get_formatted_percentage(msg_type['failed'], msg_type['requested']) msg_type['show_warning'] = float(msg_type['failed_percentage']) > 3 return statistics
def make_columns(global_stats, complaints_number): return [ # email { 'black_box': { 'number': global_stats['email']['total'], 'notification_type': 'email' }, 'other_data': [ get_tech_failure_status_box_data(global_stats['email']), get_status_box_data(global_stats['email'], 'permanent-failure', 'permanent failures'), get_status_box_data(global_stats['email'], 'temporary-failure', 'temporary failures'), { 'number': complaints_number, 'label': 'complaints', 'failing': is_over_threshold(complaints_number, global_stats['email']['total'], COMPLAINT_THRESHOLD), 'percentage': get_formatted_percentage(complaints_number, global_stats['email']['total']), 'url': url_for('main.platform_admin_list_complaints') } ], 'test_data': { 'number': global_stats['email']['test-key'], 'label': 'test emails' } }, # sms { 'black_box': { 'number': global_stats['sms']['total'], 'notification_type': 'sms' }, 'other_data': [ get_tech_failure_status_box_data(global_stats['sms']), get_status_box_data(global_stats['sms'], 'permanent-failure', 'permanent failures'), get_status_box_data(global_stats['sms'], 'temporary-failure', 'temporary failures') ], 'test_data': { 'number': global_stats['sms']['test-key'], 'label': 'test text messages' } }, # letter { 'black_box': { 'number': global_stats['letter']['total'], 'notification_type': 'letter' }, 'other_data': [ get_tech_failure_status_box_data(global_stats['letter']), get_status_box_data(global_stats['letter'], 'virus-scan-failed', 'virus scan failures', ZERO_FAILURE_THRESHOLD) ], 'test_data': { 'number': global_stats['letter']['test-key'], 'label': 'test letters' } }, ]