mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-15 19:01:04 -04:00
merge from main
This commit is contained in:
@@ -285,11 +285,22 @@ def init_app(application):
|
||||
@application.context_processor
|
||||
def _attach_current_global_daily_messages():
|
||||
remaining_global_messages = 0
|
||||
|
||||
if current_app:
|
||||
global_limit = current_app.config["GLOBAL_SERVICE_MESSAGE_LIMIT"]
|
||||
global_messages_count = service_api_client.get_global_notification_count()
|
||||
remaining_global_messages = global_limit - global_messages_count
|
||||
if request.view_args:
|
||||
service_id = request.view_args.get(
|
||||
"service_id", session.get("service_id")
|
||||
)
|
||||
else:
|
||||
service_id = session.get("service_id")
|
||||
|
||||
if service_id:
|
||||
global_limit = current_app.config["GLOBAL_SERVICE_MESSAGE_LIMIT"]
|
||||
global_messages_count = (
|
||||
service_api_client.get_global_notification_count(service_id)
|
||||
)
|
||||
remaining_global_messages = global_limit - global_messages_count.get(
|
||||
"count"
|
||||
)
|
||||
return {"daily_global_messages_remaining": remaining_global_messages}
|
||||
|
||||
@application.before_request
|
||||
|
||||
@@ -227,7 +227,7 @@ def terms():
|
||||
)
|
||||
|
||||
|
||||
@main.route("/features/using-notify")
|
||||
@main.route("/features/using_notify")
|
||||
@user_is_logged_in
|
||||
def using_notify():
|
||||
return (
|
||||
|
||||
@@ -61,6 +61,82 @@ class HeaderNavigation(Navigation):
|
||||
"message_status",
|
||||
"guidance_index",
|
||||
},
|
||||
"accounts-or-dashboard": {
|
||||
"conversation",
|
||||
"inbox",
|
||||
"monthly",
|
||||
"service_dashboard",
|
||||
"template_usage",
|
||||
"view_notification",
|
||||
"view_notifications",
|
||||
"action_blocked",
|
||||
"add_service_template",
|
||||
"check_messages",
|
||||
"check_notification",
|
||||
"choose_template",
|
||||
"choose_template_to_copy",
|
||||
"confirm_redact_template",
|
||||
"conversation_reply",
|
||||
"copy_template",
|
||||
"delete_service_template",
|
||||
"edit_service_template",
|
||||
"manage_template_folder",
|
||||
"send_messages",
|
||||
"send_one_off",
|
||||
"send_one_off_step",
|
||||
"send_one_off_to_myself",
|
||||
"set_sender",
|
||||
"set_template_sender",
|
||||
"view_template",
|
||||
"view_template_version",
|
||||
"view_template_versions",
|
||||
"uploads",
|
||||
"view_job",
|
||||
"view_jobs",
|
||||
"confirm_edit_user_email",
|
||||
"confirm_edit_user_mobile_number",
|
||||
"edit_user_email",
|
||||
"edit_user_mobile_number",
|
||||
"edit_user_permissions",
|
||||
"invite_user",
|
||||
"manage_users",
|
||||
"remove_user_from_service",
|
||||
"usage",
|
||||
"email_branding_govuk",
|
||||
"email_branding_govuk_and_org",
|
||||
"email_branding_organization",
|
||||
"email_branding_request",
|
||||
"email_branding_something_else",
|
||||
"estimate_usage",
|
||||
"link_service_to_organization",
|
||||
"request_to_go_live",
|
||||
"service_add_email_reply_to",
|
||||
"service_add_sms_sender",
|
||||
"service_confirm_delete_email_reply_to",
|
||||
"service_confirm_delete_sms_sender",
|
||||
"service_edit_email_reply_to",
|
||||
"service_edit_sms_sender",
|
||||
"service_email_reply_to",
|
||||
"service_name_change",
|
||||
"service_preview_email_branding",
|
||||
"service_set_auth_type",
|
||||
"service_set_channel",
|
||||
"send_files_by_email_contact_details",
|
||||
"service_set_email_branding",
|
||||
"service_set_inbound_number",
|
||||
"service_set_inbound_sms",
|
||||
"service_set_international_sms",
|
||||
"service_set_reply_to_email",
|
||||
"service_set_sms_prefix",
|
||||
"service_verify_reply_to_address",
|
||||
"service_verify_reply_to_address_updates",
|
||||
"service_settings",
|
||||
"service_sms_senders",
|
||||
"set_free_sms_allowance",
|
||||
"set_message_limit",
|
||||
"set_rate_limit",
|
||||
"submit_request_to_go_live",
|
||||
},
|
||||
"pricing": {
|
||||
"how_to_pay",
|
||||
"billing_details",
|
||||
|
||||
@@ -497,11 +497,8 @@ class ServiceAPIClient(NotifyAdminAPIClient):
|
||||
|
||||
return int(count)
|
||||
|
||||
def get_global_notification_count(self):
|
||||
# if cache is not set, or not enabled, return 0
|
||||
# count = redis_client.get(daily_total_cache_key()) or 0
|
||||
count = 0
|
||||
return int(count)
|
||||
def get_global_notification_count(self, service_id):
|
||||
return self.get("/service/{}/notification-count".format(service_id))
|
||||
|
||||
|
||||
service_api_client = ServiceAPIClient()
|
||||
|
||||
@@ -43,6 +43,11 @@
|
||||
{% if current_user.is_authenticated %}
|
||||
{% if current_user.platform_admin %}
|
||||
{% set navigation = [
|
||||
{
|
||||
"href": url_for("main.show_accounts_or_dashboard"),
|
||||
"text": "Current service",
|
||||
"active": header_navigation.is_selected('accounts-or-dashboard')
|
||||
},
|
||||
{
|
||||
"href": url_for('main.get_started'),
|
||||
"text": "Using Notify",
|
||||
@@ -75,6 +80,11 @@
|
||||
] %}
|
||||
{% else %}
|
||||
{% set navigation = [
|
||||
{
|
||||
"href": url_for("main.show_accounts_or_dashboard"),
|
||||
"text": "Current service",
|
||||
"active": header_navigation.is_selected('accounts-or-dashboard')
|
||||
},
|
||||
{
|
||||
"href": url_for('main.get_started'),
|
||||
"text": "Using Notify",
|
||||
@@ -92,7 +102,7 @@
|
||||
},
|
||||
{
|
||||
"href": url_for('main.user_profile'),
|
||||
"text": current_user.name,
|
||||
"text": "User profile",
|
||||
"active": header_navigation.is_selected('user-profile')
|
||||
},
|
||||
{
|
||||
|
||||
@@ -4,16 +4,10 @@
|
||||
<div class="grid-row">
|
||||
<div class="grid-col-8">
|
||||
<h1 class="heading-large">
|
||||
Sorry, there’s a problem with Notify.gov
|
||||
Sorry, we can't deliver what you asked for right now.
|
||||
</h1>
|
||||
<p class="usa-body">
|
||||
Try again later.
|
||||
</p>
|
||||
<!-- <p class="usa-body">
|
||||
You can check our <a class="usa-link" href="https://status.notifications.service.gov.uk">system status</a> page to see if there are any known issues.
|
||||
</p> -->
|
||||
<p class="usa-body">
|
||||
To report a problem, please email <a class="usa-link" href="mailto:notify-support@gsa.gov">notify-support@gsa.gov</a>.
|
||||
Please try again later or <a class="usa-link" href="mailto:notify-support@gsa.gov"></a>email us</a> for more information.</p>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
{% if help %}
|
||||
{% include 'partials/tour.html' %}
|
||||
{% else %}
|
||||
<nav class="nav margin-bottom-5">
|
||||
<nav class="nav">
|
||||
<a class="usa-button margin-top-1 margin-bottom-5 width-full"
|
||||
href="{{ url_for('.choose_template', service_id=current_service.id) }}">Send messages</a>
|
||||
<ul class="usa-sidenav">
|
||||
{% if current_user.has_permissions() %}
|
||||
{% if current_user.has_permissions('view_activity') %}
|
||||
<li class="usa-sidenav__item"><a class="{{ main_navigation.is_selected('dashboard') }}" href="{{ url_for('.service_dashboard', service_id=current_service.id) }}">Dashboard</a></li>
|
||||
{% endif %}
|
||||
<li class="usa-sidenav__item"><a class="{{ main_navigation.is_selected('templates') }}" href="{{ url_for('.choose_template', service_id=current_service.id) }}">Send messages</a></li>
|
||||
{# <li class="usa-sidenav__item"><a class="{{ main_navigation.is_selected('templates') }}" href="{{ url_for('.choose_template', service_id=current_service.id) }}">Send messages</a></li> #}
|
||||
{% if not current_user.has_permissions('view_activity') %}
|
||||
<li class="usa-sidenav__item"><a class="{{ casework_navigation.is_selected('sent-messages') }}" href="{{ url_for('.view_notifications', service_id=current_service.id, status='sending,delivered,failed') }}">Sent messages</a></li>
|
||||
{% endif %}
|
||||
@@ -27,8 +29,4 @@
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
<div>
|
||||
<p class="usa--body bold margin-bottom-1">Messages Left Across Services</p>
|
||||
<p>{{ daily_global_messages_remaining }}</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
</div>
|
||||
{% endmacro %}
|
||||
|
||||
<div class="navigation-service margin-top-2 display-flex flex-align-end flex-justify border-bottom padding-bottom-1">
|
||||
<div class="navigation-service margin-top-5 display-flex flex-align-end flex-justify border-bottom padding-bottom-1">
|
||||
{% if current_service.organization_id %}
|
||||
{% if current_user.platform_admin or
|
||||
(current_user.belongs_to_organization(current_service.organization_id) and current_service.live) %}
|
||||
|
||||
@@ -2,22 +2,34 @@
|
||||
|
||||
<div class='grid-row grid-gap ajax-block-container'>
|
||||
<div class='grid-col-12'>
|
||||
<div class="keyline-block">
|
||||
{% if sms_cost %}
|
||||
{{ big_number(
|
||||
sms_cost,
|
||||
'spent on text messages',
|
||||
currency="$",
|
||||
smaller=True
|
||||
) }}
|
||||
{% else %}
|
||||
{{ big_number(sms_allowance_remaining, 'free text messages left', smaller=True) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<table class="usa-table usa-table--borderless margin-top-1 margin-bottom-5">
|
||||
<caption class="usa-sr-only">
|
||||
Daily
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Usage</th>
|
||||
<th scope="col">Remaining</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ big_number(40000 - sms_allowance_remaining, smaller=True) }}</td>
|
||||
<td>
|
||||
{% if sms_cost %}
|
||||
{{ big_number(
|
||||
sms_cost,
|
||||
'spent on text messages',
|
||||
currency="$",
|
||||
smaller=True
|
||||
) }}
|
||||
{% else %}
|
||||
{{ big_number(sms_allowance_remaining, smaller=True) }}
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<!-- <div class='grid-col-6 pilot-disabled'>
|
||||
<div class="keyline-block">
|
||||
{{ big_number("0", 'email disabled during SMS pilot', smaller=True) }}
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
|
||||
@@ -19,9 +19,10 @@
|
||||
|
||||
{{ ajax_block(partials, updates_url, 'upcoming') }}
|
||||
|
||||
<h2 class="font-body-lg margin-top-0 margin-bottom-1">
|
||||
In the last seven days
|
||||
<h2 class="font-body-xl margin-0">
|
||||
Messages sent
|
||||
</h2>
|
||||
<p class="margin-top-0">In the last seven days</p>
|
||||
|
||||
{{ ajax_block(partials, updates_url, 'inbox') }}
|
||||
|
||||
@@ -29,15 +30,37 @@
|
||||
|
||||
{{ ajax_block(partials, updates_url, 'template-statistics') }}
|
||||
|
||||
<h2 class="margin-top-4 margin-bottom-1">Usage</h2>
|
||||
<h3 class="margin-bottom-0">Daily</h3>
|
||||
<p class="margin-0">Across all services</p>
|
||||
<table class="usa-table usa-table--borderless margin-top-1 margin-bottom-5">
|
||||
<caption class="usa-sr-only">
|
||||
Daily
|
||||
</caption>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Usage</th>
|
||||
<th scope="col">Remaining</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>{{ 5000 - daily_global_messages_remaining }}</td>
|
||||
<td>
|
||||
{{ daily_global_messages_remaining }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{% if current_user.has_permissions('manage_service') %}
|
||||
<h2 class='font-body-lg margin-bottom-0'>This year</h2>
|
||||
<h3 class='margin-bottom-0'>2023</h3>
|
||||
{{ ajax_block(partials, updates_url, 'usage') }}
|
||||
{{ show_more(
|
||||
url_for(".usage", service_id=current_service['id']),
|
||||
'See usage'
|
||||
'See all usage'
|
||||
) }}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<h2 class="font-body-lg">Get started</h2>
|
||||
<a class="usa-button" href="{{ url_for('.choose_template', service_id=current_service.id) }}">
|
||||
<h2 class="font-body-lg margin-top-0 margin-bottom-1">Get started</h2>
|
||||
<a class="usa-button margin-bottom-5" href="{{ url_for('.choose_template', service_id=current_service.id) }}">
|
||||
Create your first template
|
||||
</a>
|
||||
|
||||
@@ -21,7 +21,10 @@
|
||||
<div class='grid-row'>
|
||||
|
||||
<div class='grid-col-12'>
|
||||
<h2 class='heading-small'>Text messages</h2>
|
||||
<h2 class="heading-small margin-bottom-1">Daily messages across all services</h2>
|
||||
<p class="margin-0">You have sent {{ 5000 - daily_global_messages_remaining }} of your 5000 daily messages allowance.</p>
|
||||
<p class="margin-0"></p>You have {{ daily_global_messages_remaining }} messages remaining.</p>
|
||||
<h2 class='heading-small margin-bottom-1'>Text messages</h2>
|
||||
<div class="keyline-block">
|
||||
You have sent
|
||||
{{ big_number(sms_sent, 'messages of your', smaller=True) }}
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
{% from "components/table.html" import mapping_table, row, text_field, optional_text_field, edit_field, field, boolean_field with context %}
|
||||
|
||||
{% block per_page_title %}
|
||||
Your profile
|
||||
User profile
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
|
||||
<h1 class="font-body-2xl margin-bottom-3">Your profile</h1>
|
||||
<h1 class="font-body-2xl margin-bottom-3">User profile</h1>
|
||||
|
||||
<div class="body-copy-table">
|
||||
{% call mapping_table(
|
||||
caption='Your profile',
|
||||
caption='User profile',
|
||||
field_headings_visible=False,
|
||||
caption_visible=False
|
||||
) %}
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
{% block beforeContent %}
|
||||
{% if current_service and current_service.active and current_user.is_authenticated and current_user.belongs_to_service(current_service.id) %}
|
||||
<div class="navigation-service usa-breadcrumb">
|
||||
<!-- <div class="navigation-service usa-breadcrumb">
|
||||
<a href="{{ url_for('main.show_accounts_or_dashboard') }}" class="usa-link usa-breadcrumb__link usa-breadcrumb-back-to">Back to {{ current_service.name }}</a>
|
||||
</div>
|
||||
</div> -->
|
||||
{% endif %}
|
||||
{% block backLink %}{% endblock %}
|
||||
{% endblock %}
|
||||
|
||||
@@ -63,6 +63,7 @@ def generate_notifications_csv(**kwargs):
|
||||
from app import notification_api_client
|
||||
from app.s3_client.s3_csv_client import s3download
|
||||
|
||||
current_app.logger.info("\n\n\n\nENTER generate_notifications_csv")
|
||||
if "page" not in kwargs:
|
||||
kwargs["page"] = 1
|
||||
|
||||
@@ -76,7 +77,16 @@ def generate_notifications_csv(**kwargs):
|
||||
fieldnames = (
|
||||
["Row number"]
|
||||
+ original_column_headers
|
||||
+ ["Template", "Type", "Sent by", "Job", "Status", "Time"]
|
||||
+ [
|
||||
"Template",
|
||||
"Type",
|
||||
"Sent by",
|
||||
"Job",
|
||||
"Carrier",
|
||||
"Carrier Response",
|
||||
"Status",
|
||||
"Time",
|
||||
]
|
||||
)
|
||||
else:
|
||||
fieldnames = [
|
||||
@@ -85,6 +95,8 @@ def generate_notifications_csv(**kwargs):
|
||||
"Type",
|
||||
"Sent by",
|
||||
"Job",
|
||||
"Carrier",
|
||||
"Carrier Response",
|
||||
"Status",
|
||||
"Time",
|
||||
]
|
||||
@@ -96,7 +108,7 @@ def generate_notifications_csv(**kwargs):
|
||||
**kwargs
|
||||
)
|
||||
for notification in notifications_resp["notifications"]:
|
||||
current_app.logger.info(notification)
|
||||
current_app.logger.info(f"\n\n{notification}")
|
||||
if kwargs.get("job_id"):
|
||||
values = (
|
||||
[
|
||||
@@ -111,6 +123,8 @@ def generate_notifications_csv(**kwargs):
|
||||
notification["template_type"],
|
||||
notification["created_by_name"],
|
||||
notification["job_name"],
|
||||
notification["carrier"],
|
||||
notification["provider_response"],
|
||||
notification["status"],
|
||||
notification["created_at"],
|
||||
]
|
||||
@@ -122,6 +136,8 @@ def generate_notifications_csv(**kwargs):
|
||||
notification["template_type"],
|
||||
notification["created_by_name"] or "",
|
||||
notification["job_name"] or "",
|
||||
notification["carrier"],
|
||||
notification["provider_response"],
|
||||
notification["status"],
|
||||
notification["created_at"],
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user