mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-20 22:40:31 -04:00
Revert "Merge pull request #1336 from alphagov/revert-show-notifications"
This reverts commit7e354ff341, reversing changes made to6f3bcff32f.
This commit is contained in:
@@ -66,6 +66,7 @@ $path: '/static/images/';
|
||||
@import 'views/api';
|
||||
@import 'views/product-page';
|
||||
@import 'views/template';
|
||||
@import 'views/notification';
|
||||
|
||||
// TODO: break this up
|
||||
@import 'app';
|
||||
|
||||
@@ -46,17 +46,6 @@
|
||||
transition: width 0.6s ease-in-out;
|
||||
}
|
||||
|
||||
&-label {
|
||||
@include bold-19;
|
||||
display: block;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: $govuk-blue;
|
||||
max-width: 100%;
|
||||
background: $white;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.file-list {
|
||||
@@ -67,12 +56,17 @@
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
padding-bottom: 30px;
|
||||
padding-top: 10px;
|
||||
margin-bottom: -30px;
|
||||
margin-top: -10px;
|
||||
}
|
||||
|
||||
&-hint {
|
||||
@include core-16;
|
||||
display: block;
|
||||
color: $secondary-text-colour;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -96,5 +90,6 @@
|
||||
}
|
||||
|
||||
.align-with-message-body {
|
||||
display: block;
|
||||
margin-top: $gutter * 5 / 6;
|
||||
}
|
||||
|
||||
18
app/assets/stylesheets/views/notification.scss
Normal file
18
app/assets/stylesheets/views/notification.scss
Normal file
@@ -0,0 +1,18 @@
|
||||
.notification-status {
|
||||
|
||||
@include core-16;
|
||||
color: $secondary-text-colour;
|
||||
margin-top: -$gutter-half;
|
||||
|
||||
&.error {
|
||||
|
||||
color: $error-colour;
|
||||
font-weight: bold;
|
||||
|
||||
a {
|
||||
color: $error-colour;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -14,6 +14,10 @@ from flask import (
|
||||
stream_with_context
|
||||
)
|
||||
from flask_login import login_required
|
||||
from notifications_utils.template import (
|
||||
Template,
|
||||
WithSubjectTemplate,
|
||||
)
|
||||
from werkzeug.datastructures import MultiDict
|
||||
|
||||
from app import (
|
||||
@@ -110,21 +114,7 @@ def view_job(service_id, job_id):
|
||||
'views/jobs/job.html',
|
||||
finished=(total_notifications == processed_notifications),
|
||||
uploaded_file_name=job['original_file_name'],
|
||||
template=get_template(
|
||||
service_api_client.get_service_template(
|
||||
service_id=service_id,
|
||||
template_id=job['template'],
|
||||
version=job['template_version']
|
||||
)['data'],
|
||||
current_service,
|
||||
letter_preview_url=url_for(
|
||||
'.view_template_version_preview',
|
||||
service_id=service_id,
|
||||
template_id=job['template'],
|
||||
version=job['template_version'],
|
||||
filetype='png',
|
||||
),
|
||||
),
|
||||
template_id=job['template'],
|
||||
status=request.args.get('status', ''),
|
||||
updates_url=url_for(
|
||||
".view_job_updates",
|
||||
@@ -271,7 +261,7 @@ def get_notifications(service_id, message_type, status_override=None):
|
||||
),
|
||||
'notifications': render_template(
|
||||
'views/activity/notifications.html',
|
||||
notifications=notifications['notifications'],
|
||||
notifications=add_preview_of_content_to_notifications(notifications['notifications']),
|
||||
page=page,
|
||||
prev_page=prev_page,
|
||||
next_page=next_page,
|
||||
@@ -360,6 +350,11 @@ def get_job_partials(job):
|
||||
notifications = notification_api_client.get_notifications_for_service(
|
||||
job['service'], job['id'], status=filter_args['status']
|
||||
)
|
||||
template = service_api_client.get_service_template(
|
||||
service_id=current_service['id'],
|
||||
template_id=job['template'],
|
||||
version=job['template_version']
|
||||
)['data']
|
||||
return {
|
||||
'counts': render_template(
|
||||
'partials/count.html',
|
||||
@@ -368,7 +363,9 @@ def get_job_partials(job):
|
||||
),
|
||||
'notifications': render_template(
|
||||
'partials/jobs/notifications.html',
|
||||
notifications=notifications['notifications'],
|
||||
notifications=list(
|
||||
add_preview_of_content_to_notifications(notifications['notifications'])
|
||||
),
|
||||
more_than_one_page=bool(notifications.get('links', {}).get('next')),
|
||||
percentage_complete=(job['notifications_requested'] / job['notification_count'] * 100),
|
||||
download_link=url_for(
|
||||
@@ -379,10 +376,26 @@ def get_job_partials(job):
|
||||
),
|
||||
help=get_help_argument(),
|
||||
time_left=get_time_left(job['created_at']),
|
||||
job=job
|
||||
job=job,
|
||||
template=template,
|
||||
template_version=job['template_version'],
|
||||
),
|
||||
'status': render_template(
|
||||
'partials/jobs/status.html',
|
||||
job=job
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def add_preview_of_content_to_notifications(notifications):
|
||||
return [
|
||||
dict(
|
||||
preview_of_content=(
|
||||
str(Template(notification['template'], notification['personalisation']))
|
||||
if notification['template']['template_type'] == 'sms' else
|
||||
WithSubjectTemplate(notification['template'], notification['personalisation']).subject
|
||||
),
|
||||
**notification
|
||||
)
|
||||
for notification in notifications
|
||||
]
|
||||
|
||||
@@ -10,6 +10,7 @@ from flask_login import login_required
|
||||
|
||||
from app import (
|
||||
notification_api_client,
|
||||
job_api_client,
|
||||
current_service
|
||||
)
|
||||
from app.main import main
|
||||
@@ -39,27 +40,34 @@ def get_status_arg(filter_args):
|
||||
return REQUESTED_STATUSES
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/one-off-notification/<notification_id>")
|
||||
@main.route("/services/<service_id>/notification/<notification_id>")
|
||||
@login_required
|
||||
@user_has_permissions('view_activity', admin_override=True)
|
||||
def view_notification(service_id, notification_id):
|
||||
notification = notification_api_client.get_notification(service_id, notification_id)
|
||||
template = get_template(
|
||||
notification['template'],
|
||||
current_service,
|
||||
letter_preview_url=url_for(
|
||||
'.view_template_version_preview',
|
||||
service_id=service_id,
|
||||
template_id=notification['template']['id'],
|
||||
version=notification['template_version'],
|
||||
filetype='png',
|
||||
),
|
||||
show_recipient=True,
|
||||
)
|
||||
template.values = get_all_personalisation_from_notification(notification)
|
||||
if notification['job']:
|
||||
job = job_api_client.get_job(service_id, notification['job']['id'])['data']
|
||||
else:
|
||||
job = None
|
||||
return render_template(
|
||||
'views/notifications/notification.html',
|
||||
finished=(notification['status'] in (DELIVERED_STATUSES + FAILURE_STATUSES)),
|
||||
uploaded_file_name='Report',
|
||||
template=get_template(
|
||||
notification['template'],
|
||||
current_service,
|
||||
letter_preview_url=url_for(
|
||||
'.view_template_version_preview',
|
||||
service_id=service_id,
|
||||
template_id=notification['template']['id'],
|
||||
version=notification['template_version'],
|
||||
filetype='png',
|
||||
),
|
||||
),
|
||||
status=request.args.get('status'),
|
||||
template=template,
|
||||
job=job,
|
||||
updates_url=url_for(
|
||||
".view_notification_updates",
|
||||
service_id=service_id,
|
||||
@@ -68,11 +76,13 @@ def view_notification(service_id, notification_id):
|
||||
help=get_help_argument()
|
||||
),
|
||||
partials=get_single_notification_partials(notification),
|
||||
created_by=notification.get('created_by'),
|
||||
created_at=notification['created_at'],
|
||||
help=get_help_argument()
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/one-off-notification/<notification_id>.json")
|
||||
@main.route("/services/<service_id>/notification/<notification_id>.json")
|
||||
@user_has_permissions('view_activity', admin_override=True)
|
||||
def view_notification_updates(service_id, notification_id):
|
||||
return jsonify(**get_single_notification_partials(
|
||||
@@ -80,49 +90,10 @@ def view_notification_updates(service_id, notification_id):
|
||||
))
|
||||
|
||||
|
||||
def _get_single_notification_counts(notification, help_argument):
|
||||
return [
|
||||
(
|
||||
label,
|
||||
query_param,
|
||||
url_for(
|
||||
".view_notification",
|
||||
service_id=notification['service'],
|
||||
notification_id=notification['id'],
|
||||
status=query_param,
|
||||
help=help_argument
|
||||
),
|
||||
count
|
||||
) for label, query_param, count in [
|
||||
[
|
||||
'total', '',
|
||||
1
|
||||
],
|
||||
[
|
||||
'sending', 'sending',
|
||||
int(notification['status'] in SENDING_STATUSES)
|
||||
],
|
||||
[
|
||||
'delivered', 'delivered',
|
||||
int(notification['status'] in DELIVERED_STATUSES)
|
||||
],
|
||||
[
|
||||
'failed', 'failed',
|
||||
int(notification['status'] in FAILURE_STATUSES)
|
||||
]
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
def get_single_notification_partials(notification):
|
||||
status_args = get_status_arg(request.args)
|
||||
|
||||
return {
|
||||
'counts': render_template(
|
||||
'partials/count.html',
|
||||
counts=_get_single_notification_counts(notification, request.args.get('help', 0)),
|
||||
status=status_args
|
||||
),
|
||||
'notifications': render_template(
|
||||
'partials/notifications/notifications.html',
|
||||
notification=notification,
|
||||
@@ -135,3 +106,18 @@ def get_single_notification_partials(notification):
|
||||
notification=notification
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def get_all_personalisation_from_notification(notification):
|
||||
if notification['template']['template_type'] == 'email':
|
||||
return dict(
|
||||
email_address=notification['to'],
|
||||
**notification['personalisation']
|
||||
)
|
||||
if notification['template']['template_type'] == 'sms':
|
||||
return dict(
|
||||
phone_number=notification['to'],
|
||||
**notification['personalisation']
|
||||
)
|
||||
if notification['template']['template_type'] == 'letter':
|
||||
return notification['personalisation']
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
|
||||
{% macro notification_status_field(notification) %}
|
||||
{% call field(status=notification.status|format_notification_status_as_field_status, align='right') %}
|
||||
{% if notification.status in ['created', 'sending', 'delivered'] %}<span class="align-with-message-body">{% endif %}
|
||||
{% if notification.status|format_notification_status_as_url %}
|
||||
<a href="{{ notification.status|format_notification_status_as_url }}">
|
||||
{% endif %}
|
||||
@@ -135,6 +136,7 @@
|
||||
(notification.updated_at or notification.created_at)|format_datetime_short
|
||||
) }}
|
||||
</span>
|
||||
{% if notification.status in ['created', 'sending', 'delivered'] %}</span>{% endif %}
|
||||
{% endcall %}
|
||||
{% endmacro %}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
Notify delivers the message
|
||||
</p>
|
||||
{% if help == '3' %}
|
||||
<a href='{{ url_for(".go_to_dashboard_after_tour", service_id=current_service.id, example_template_id=template.id) }}'>
|
||||
<a href='{{ url_for(".go_to_dashboard_after_tour", service_id=current_service.id, example_template_id=template_id) }}'>
|
||||
Now go to your dashboard
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
@@ -5,7 +5,9 @@
|
||||
{% if job.job_status == 'scheduled' %}
|
||||
|
||||
<p>
|
||||
Sending will start {{ job.scheduled_for|format_datetime_relative }}
|
||||
Sending
|
||||
<a href="{{ url_for('.view_template_version', service_id=current_service.id, template_id=template.id, version=template_version) }}">{{ template.name }}</a>
|
||||
{{ job.scheduled_for|format_datetime_relative }}
|
||||
</p>
|
||||
<div class="page-footer">
|
||||
<form method="post">
|
||||
@@ -48,7 +50,10 @@
|
||||
field_headings_visible=False
|
||||
) %}
|
||||
{% call row_heading() %}
|
||||
<p>{{ item.to }}</p>
|
||||
<a class="file-list-filename" href="{{ url_for('.view_notification', service_id=current_service.id, notification_id=item.id) }}">{{ item.to }}</a>
|
||||
<p class="file-list-hint">
|
||||
{{ item.preview_of_content }}
|
||||
</p>
|
||||
{% endcall %}
|
||||
{{ notification_status_field(item) }}
|
||||
{% endcall %}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="ajax-block-container">
|
||||
<p class='heading-small bottom-gutter'>
|
||||
<p class='bottom-gutter'>
|
||||
{% if job.scheduled_for %}
|
||||
{% if job.processing_started %}
|
||||
Sent by {{ job.created_by.name }} on {{ job.processing_started|format_datetime_short }}
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
<div class="ajax-block-container">
|
||||
<p class='heading-small bottom-gutter'>
|
||||
Sent {% if notification.created_by %}by {{ notification.created_by.name }} {% endif %}
|
||||
on {{ notification.created_at|format_datetime_short }}
|
||||
<p class="notification-status {{ notification.status|format_notification_status_as_field_status }}">
|
||||
{% if notification.status|format_notification_status_as_url %}
|
||||
<a href="{{ notification.status|format_notification_status_as_url }}">
|
||||
{% endif %}
|
||||
{{ notification.status|format_notification_status(
|
||||
notification.template.template_type
|
||||
) }}
|
||||
{% if notification.status|format_notification_status_as_url %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -17,19 +17,9 @@
|
||||
) %}
|
||||
|
||||
{% call row_heading() %}
|
||||
<p>
|
||||
{{ item.to }}
|
||||
</p>
|
||||
<p class="hint">
|
||||
{% if item.job and item.job.original_file_name == 'Report' %}
|
||||
<a href="{{ url_for('.view_template_version', service_id=current_service.id, template_id=item.template.id, version=item.template_version) }}">{{ item.template.name }}</a>
|
||||
sent to one recipient
|
||||
{% elif item.job %}
|
||||
From <a href="{{ url_for(".view_job", service_id=current_service.id, job_id=item.job.id) }}">{{ item.job.original_file_name }}</a>
|
||||
{% else %}
|
||||
<a href="{{ url_for('.view_template_version', service_id=current_service.id, template_id=item.template.id, version=item.template_version) }}">{{ item.template.name }}</a>
|
||||
from an API call
|
||||
{% endif %}
|
||||
<a class="file-list-filename" href="{{ url_for('.view_notification', service_id=current_service.id, notification_id=item.id) }}">{{ item.to }}</a>
|
||||
<p class="file-list-hint">
|
||||
{{ item.preview_of_content }}
|
||||
</p>
|
||||
{% endcall %}
|
||||
|
||||
|
||||
@@ -41,11 +41,9 @@
|
||||
field_headings_visible=False
|
||||
) %}
|
||||
{% call row_heading() %}
|
||||
<span class="spark-bar-label">
|
||||
<a href="{{ url_for('.view_template', service_id=current_service.id, template_id=item.id) }}">{{ item.name }}</a>
|
||||
<span class="file-list-hint">
|
||||
{{ message_count_label(1, item.type, suffix='template')|capitalize }}
|
||||
</span>
|
||||
<a class="file-list-filename" href="{{ url_for('.view_template', service_id=current_service.id, template_id=item.id) }}">{{ item.name }}</a>
|
||||
<span class="file-list-hint">
|
||||
{{ message_count_label(1, item.type, suffix='template')|capitalize }}
|
||||
</span>
|
||||
{% endcall %}
|
||||
{{ spark_bar_field(item.requested_count, most_used_template_count) }}
|
||||
|
||||
@@ -31,10 +31,10 @@
|
||||
>
|
||||
{{ item.user_number | format_phone_number_human_readable }}
|
||||
</a>
|
||||
<span class="wide-left-hand-column">{{ item.content }}</span>
|
||||
<span class="file-list-hint">{{ item.content }}</span>
|
||||
{% endcall %}
|
||||
{% call field(align='right') %}
|
||||
<span class="file-list-hint align-with-message-body">
|
||||
<span class="align-with-message-body">
|
||||
{{ item.created_at | format_delta }}
|
||||
</span>
|
||||
{% endcall %}
|
||||
|
||||
@@ -17,11 +17,9 @@
|
||||
) %}
|
||||
|
||||
{% call row_heading() %}
|
||||
<span class="spark-bar-label">
|
||||
<a href="{{ url_for('.view_template', service_id=current_service.id, template_id=item.template_id) }}">{{ item.template_name }}</a>
|
||||
<span class="file-list-hint">
|
||||
{{ message_count_label(1, item.template_type, suffix='template')|capitalize }}
|
||||
</span>
|
||||
<a class="file-list-filename" href="{{ url_for('.view_template', service_id=current_service.id, template_id=item.template_id) }}">{{ item.template_name }}</a>
|
||||
<span class="file-list-hint">
|
||||
{{ message_count_label(1, item.template_type, suffix='template')|capitalize }}
|
||||
</span>
|
||||
{% endcall %}
|
||||
{% if template_statistics|length > 1 %}
|
||||
|
||||
@@ -13,15 +13,8 @@
|
||||
{{ uploaded_file_name }}
|
||||
</h1>
|
||||
|
||||
{{ template|string }}
|
||||
|
||||
{{ ajax_block(partials, updates_url, 'status', finished=finished) }}
|
||||
{{ ajax_block(partials, updates_url, 'counts', finished=finished) }}
|
||||
{{ ajax_block(partials, updates_url, 'notifications', finished=finished) }}
|
||||
|
||||
{{ page_footer(
|
||||
secondary_link=url_for('.view_template', service_id=current_service.id, template_id=template.id),
|
||||
secondary_link_text='Back to {}'.format(template.name)
|
||||
) }}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/banner.html" import banner %}
|
||||
{% from "components/ajax-block.html" import ajax_block %}
|
||||
{% from "components/message-count-label.html" import message_count_label %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
|
||||
{% block service_page_title %}
|
||||
@@ -10,20 +11,23 @@
|
||||
{% block maincolumn_content %}
|
||||
|
||||
<h1 class="heading-large">
|
||||
Report
|
||||
{{ message_count_label(1, template.template_type, suffix='') | capitalize }}
|
||||
</h1>
|
||||
|
||||
<p>
|
||||
<a href="{{ url_for('.view_template', service_id=current_service.id, template_id=template.id) }}">{{ template.name }}</a>
|
||||
sent
|
||||
{% if job and job.original_file_name != 'Report' %}
|
||||
from
|
||||
<a href="{{ url_for('.view_job', service_id=current_service.id, job_id=job.id) }}">{{ job.original_file_name }}</a>
|
||||
{% elif created_by %}
|
||||
by {{ created_by.name }}
|
||||
{% endif %}
|
||||
on {{ created_at|format_datetime_short }}
|
||||
</p>
|
||||
|
||||
{{ template|string }}
|
||||
|
||||
{{ ajax_block(partials, updates_url, 'status', finished=finished) }}
|
||||
{{ ajax_block(partials, updates_url, 'counts', finished=finished) }}
|
||||
{{ ajax_block(partials, updates_url, 'notifications', finished=finished) }}
|
||||
|
||||
{% if not help %}
|
||||
{{ page_footer(
|
||||
secondary_link=url_for('.view_template', service_id=current_service.id, template_id=template.id),
|
||||
secondary_link_text='Back to {}'.format(template.name)
|
||||
) }}
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user