mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-14 10:58:58 -04:00
Add organization message usage and service counts to dashboard
- Fetch organization message allowance from API endpoint - Display messages sent, remaining, and total limit on dashboard - Add service count statistics (total, live, trial, suspended) - Pass message usage data to template for chart visualization
This commit is contained in:
@@ -5,7 +5,12 @@ from functools import partial
|
||||
from flask import current_app, flash, redirect, render_template, request, url_for
|
||||
from flask_login import current_user
|
||||
|
||||
from app import current_organization, org_invite_api_client, organizations_client
|
||||
from app import (
|
||||
current_organization,
|
||||
org_invite_api_client,
|
||||
organizations_client,
|
||||
service_api_client,
|
||||
)
|
||||
from app.main import main
|
||||
from app.main.forms import (
|
||||
AdminBillingDetailsForm,
|
||||
@@ -92,10 +97,29 @@ def organization_dashboard(org_id):
|
||||
|
||||
year = requested_and_current_financial_year(request)[0]
|
||||
|
||||
# TODO: total message allowance
|
||||
try:
|
||||
message_usage = service_api_client.get_organization_message_usage(org_id)
|
||||
except Exception as e:
|
||||
current_app.logger.error(f"Error fetching organization message usage: {e}")
|
||||
message_usage = {}
|
||||
|
||||
messages_sent = message_usage.get("messages_sent", 0)
|
||||
messages_remaining = message_usage.get("messages_remaining", 0)
|
||||
total_message_limit = message_usage.get("total_message_limit", 0)
|
||||
|
||||
services = current_organization.services
|
||||
service_counts = get_service_counts_by_status(services)
|
||||
|
||||
return render_template(
|
||||
"views/organizations/organization/index.html",
|
||||
selected_year=year,
|
||||
messages_sent=messages_sent,
|
||||
messages_remaining=messages_remaining,
|
||||
total_message_limit=total_message_limit,
|
||||
total_services=service_counts["total"],
|
||||
live_services=service_counts["live"],
|
||||
trial_services=service_counts["trial"],
|
||||
suspended_services=service_counts["suspended"],
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -561,6 +561,11 @@ class ServiceAPIClient(NotifyAdminAPIClient):
|
||||
url="service/get-service-message-ratio?service_id={0}".format(service_id),
|
||||
)
|
||||
|
||||
def get_organization_message_usage(self, org_id):
|
||||
return self.get(
|
||||
url="/organizations/{0}/message-allowance".format(org_id),
|
||||
)
|
||||
|
||||
|
||||
service_api_client = ServiceAPIClient()
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
{{ page_header('Organization Dashboard', size='large') }}
|
||||
|
||||
<div id="totalMessageChartContainer" data-messages-sent="{{ messages_sent|default(0) }}" data-messages-remaining="{{ messages_remaining|default(0) }}">
|
||||
<div id="totalMessageChartContainer" data-messages-sent="{{ messages_sent|default(0) }}" data-messages-remaining="{{ messages_remaining|default(0) }}" data-total-message-limit="{{ total_message_limit|default(0) }}">
|
||||
<div class="grid-row flex-align-center">
|
||||
<h2 id="chartTitle" class="margin-right-1 margin-y-0">Overall {{ selected_year }} Total Message Allowance</h2>
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user