Moved usage to it's own route to not confuse with dashboard

This commit is contained in:
Beverly Nguyen
2025-10-14 12:27:15 -07:00
parent 0168331390
commit 08d39d7bad
5 changed files with 128 additions and 91 deletions

View File

@@ -85,13 +85,32 @@ def organization_dashboard(org_id):
return render_template(
"views/organizations/organization/index.html",
services=services,
years=get_tuples_of_financial_years(
partial(url_for, ".organization_dashboard", org_id=current_organization.id),
start=current_financial_year - 2,
end=current_financial_year,
),
selected_year=year,
messages_sent=total_messages_sent,
messages_remaining=total_messages_remaining,
)
@main.route("/organizations/<uuid:org_id>/usage", methods=["GET"])
@user_has_permissions()
def organization_usage(org_id):
year, current_financial_year = requested_and_current_financial_year(request)
services = current_organization.services_and_usage(financial_year=year)["services"]
return render_template(
"views/organizations/organization/usage.html",
services=services,
years=get_tuples_of_financial_years(
partial(url_for, ".organization_usage", org_id=current_organization.id),
start=current_financial_year - 2,
end=current_financial_year,
),
selected_year=year,
search_form=SearchByNameForm() if len(services) > 7 else None,
**{
f"total_{key}": sum(service[key] for service in services)
@@ -100,8 +119,6 @@ def organization_dashboard(org_id):
download_link=url_for(
".download_organization_usage_report", org_id=org_id, selected_year=year
),
messages_sent=total_messages_sent,
messages_remaining=total_messages_remaining,
)

View File

@@ -339,6 +339,9 @@ class OrgNavigation(Navigation):
"dashboard": {
"organization_dashboard",
},
"usage": {
"organization_usage",
},
"settings": {
"edit_organization_billing_details",
"edit_organization_domains",

View File

@@ -1,6 +1,7 @@
<nav id="nav-org-nav" aria-label="Organization navigation" class="nav margin-bottom-4">
<ul class="usa-sidenav">
<li class="usa-sidenav__item"><a class="usa-link{{ org_navigation.is_selected('dashboard') }}" href="{{ url_for('.organization_dashboard', org_id=current_org.id) }}">Usage</a></li>
<li class="usa-sidenav__item"><a class="usa-link{{ org_navigation.is_selected('dashboard') }}" href="{{ url_for('.organization_dashboard', org_id=current_org.id) }}">Dashboard</a></li>
<li class="usa-sidenav__item"><a class="usa-link{{ org_navigation.is_selected('usage') }}" href="{{ url_for('.organization_usage', org_id=current_org.id) }}">Usage</a></li>
<li class="usa-sidenav__item"><a class="usa-link{{ org_navigation.is_selected('team-members') }}" href="{{ url_for('.manage_org_users', org_id=current_org.id) }}">Team members</a></li>
{% if current_user.platform_admin %}
<li class="usa-sidenav__item"><a class="usa-link{{ org_navigation.is_selected('settings') }}" href="{{ url_for('.organization_settings', org_id=current_org.id) }}">Settings</a></li>

View File

@@ -1,8 +1,4 @@
{% from "components/page-header.html" import page_header %}
{% from "components/big-number.html" import big_number %}
{% from "components/live-search.html" import live_search %}
{% from "components/pill.html" import pill %}
{% from "components/table.html" import list_table, field, row_heading %}
{% extends "withnav_template.html" %}
{% block org_page_title %}
@@ -54,87 +50,4 @@
</div>
<div id="totalMessageTable" class="margin-bottom-3"></div>
<div class="grid-row margin-bottom-3">
<div class="grid-col-6">
<h2 class="font-heading-md">Emails</h2>
<div class="keyline-block">
{{ big_number(
total_emails_sent,
label='sent',
smaller=True
) }}
</div>
</div>
<div class="grid-col-6">
<h2 class="font-heading-md">Text messages</h2>
<div class="keyline-block">
{{ big_number(
total_sms_cost,
'spent',
currency="$",
smaller=True
) }}
</div>
</div>
</div>
{% if search_form %}
<div>
{{ live_search(
target_selector='.organization-service',
show=True,
form=search_form,
label='Search by service'
) }}
</div>
{% endif %}
<h2 class="font-heading-md {% if search_form %}visually-hidden{% endif %}">By service</h2>
{% for service in services %}
<div class="keyline-block organization-service">
<h3 class="live-search-relevant">
<a href="{{ url_for('main.usage', service_id=service.service_id) }}" class="usa-link browse-list-link">{{ service.service_name }}</a>
</h3>
<div class="grid-row">
<div class="grid-col-6">
{{ big_number(
service.emails_sent,
label=service.emails_sent|message_count_label('email'),
smallest=True
) }}
</div>
<div class="grid-col-6">
{% if service.sms_cost %}
{{ big_number(
service.sms_cost,
'spent on text messages',
currency="$",
smallest=True
) }}
{% else %}
{{ big_number(
service.sms_billable_units,
'free {}'.format(service.sms_billable_units|message_count_label('sms')),
smallest=True
) }}
{% endif %}
</div>
</div>
</div>
{% endfor %}
<div class="keyline-block"></div>
{% if not services %}
<p class="usa-body usa-hint">
{{ current_org.name }} has no live services on Notify.gov
</p>
<div class="keyline-block"></div>
{% else %}
<div class="js-stick-at-bottom-when-scrolling">
<p>
<a href="{{ download_link }}" download="download" class="usa-link">Download this report (<abbr title="Comma separated values">CSV</abbr>)</a>
</p>
</div>
{% endif %}
{% endblock %}

View File

@@ -0,0 +1,103 @@
{% from "components/page-header.html" import page_header %}
{% from "components/big-number.html" import big_number %}
{% from "components/live-search.html" import live_search %}
{% from "components/pill.html" import pill %}
{% from "components/table.html" import list_table, field, row_heading %}
{% extends "withnav_template.html" %}
{% block org_page_title %}
Usage
{% endblock %}
{% block maincolumn_content %}
{{ page_header('Usage', size='medium') }}
<div class="margin-bottom-3">
{{ pill(years, selected_year, big_number_args={'smallest': True}) }}
</div>
<div class="grid-row margin-bottom-3">
<div class="grid-col-6">
<h2 class="font-heading-md">Emails</h2>
<div class="keyline-block">
{{ big_number(
total_emails_sent,
label='sent',
smaller=True
) }}
</div>
</div>
<div class="grid-col-6">
<h2 class="font-heading-md">Text messages</h2>
<div class="keyline-block">
{{ big_number(
total_sms_cost,
'spent',
currency="$",
smaller=True
) }}
</div>
</div>
</div>
{% if search_form %}
<div>
{{ live_search(
target_selector='.organization-service',
show=True,
form=search_form,
label='Search by service'
) }}
</div>
{% endif %}
<h2 class="font-heading-md {% if search_form %}visually-hidden{% endif %}">By service</h2>
{% for service in services %}
<div class="keyline-block organization-service">
<h3 class="live-search-relevant">
<a href="{{ url_for('main.usage', service_id=service.service_id) }}" class="usa-link browse-list-link">{{ service.service_name }}</a>
</h3>
<div class="grid-row">
<div class="grid-col-6">
{{ big_number(
service.emails_sent,
label=service.emails_sent|message_count_label('email'),
smallest=True
) }}
</div>
<div class="grid-col-6">
{% if service.sms_cost %}
{{ big_number(
service.sms_cost,
'spent on text messages',
currency="$",
smallest=True
) }}
{% else %}
{{ big_number(
service.sms_billable_units,
'free {}'.format(service.sms_billable_units|message_count_label('sms')),
smallest=True
) }}
{% endif %}
</div>
</div>
</div>
{% endfor %}
<div class="keyline-block"></div>
{% if not services %}
<p class="usa-body usa-hint">
{{ current_org.name }} has no live services on Notify.gov
</p>
<div class="keyline-block"></div>
{% else %}
<div class="js-stick-at-bottom-when-scrolling">
<p>
<a href="{{ download_link }}" download="download" class="usa-link">Download this report (<abbr title="Comma separated values">CSV</abbr>)</a>
</p>
</div>
{% endif %}
{% endblock %}