mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-23 09:29:14 -04:00
Add a page to choose a contact list
You’ll be able to use a contact list by first choosing a template, then choosing the list you want to use. At the moment this shows all lists, not just the ones that are compatible with your template.
This commit is contained in:
@@ -42,7 +42,7 @@ from app.main.forms import (
|
||||
SetSenderForm,
|
||||
get_placeholder_form_instance,
|
||||
)
|
||||
from app.models.contact_list import ContactList
|
||||
from app.models.contact_list import ContactList, ContactLists
|
||||
from app.models.user import Users
|
||||
from app.s3_client.s3_csv_client import (
|
||||
s3download,
|
||||
@@ -492,6 +492,19 @@ def send_test_preview(service_id, template_id, filetype):
|
||||
return TemplatePreview.from_utils_template(template, filetype, page=request.args.get('page'))
|
||||
|
||||
|
||||
@main.route(
|
||||
'/services/<uuid:service_id>/send/<uuid:template_id>'
|
||||
'/from-contact-list'
|
||||
)
|
||||
@user_has_permissions('send_messages')
|
||||
def choose_from_contact_list(service_id, template_id):
|
||||
return render_template(
|
||||
'views/send-contact-list.html',
|
||||
contact_lists=ContactLists(current_service.id),
|
||||
template=current_service.get_template(template_id),
|
||||
)
|
||||
|
||||
|
||||
@main.route(
|
||||
'/services/<uuid:service_id>/send/<uuid:template_id>'
|
||||
'/from-contact-list/<uuid:contact_list_id>'
|
||||
|
||||
@@ -3,7 +3,7 @@ from notifications_utils.formatters import strip_whitespace
|
||||
from notifications_utils.recipients import RecipientCSV
|
||||
from werkzeug.utils import cached_property
|
||||
|
||||
from app.models import JSONModel
|
||||
from app.models import JSONModel, ModelList
|
||||
from app.notify_client.contact_list_api_client import contact_list_api_client
|
||||
from app.s3_client.s3_csv_client import (
|
||||
get_csv_metadata,
|
||||
@@ -28,9 +28,9 @@ class ContactList(JSONModel):
|
||||
@classmethod
|
||||
def from_id(cls, contact_list_id, *, service_id):
|
||||
# This is temporary until we have a get single list endpoint
|
||||
for contact_list in contact_list_api_client.get_contact_lists(service_id):
|
||||
if contact_list['id'] == contact_list_id:
|
||||
return cls(contact_list)
|
||||
for contact_list in ContactLists(service_id):
|
||||
if contact_list.id == contact_list_id:
|
||||
return contact_list
|
||||
abort(404)
|
||||
|
||||
@staticmethod
|
||||
@@ -77,7 +77,7 @@ class ContactList(JSONModel):
|
||||
metadata = ContactList.get_metadata(service_id, upload_id)
|
||||
new_upload_id = s3upload(
|
||||
service_id,
|
||||
contents,
|
||||
{'data': contents},
|
||||
current_app.config['AWS_REGION'],
|
||||
)
|
||||
set_metadata_on_csv_upload(
|
||||
@@ -111,3 +111,8 @@ class ContactList(JSONModel):
|
||||
international_sms=True,
|
||||
max_initial_rows_shown=50,
|
||||
)
|
||||
|
||||
|
||||
class ContactLists(ModelList):
|
||||
client_method = contact_list_api_client.get_contact_lists
|
||||
model = ContactList
|
||||
|
||||
@@ -149,6 +149,7 @@ class HeaderNavigation(Navigation):
|
||||
'check_notification',
|
||||
'no_cookie.check_notification_preview',
|
||||
'choose_account',
|
||||
'choose_from_contact_list',
|
||||
'choose_service',
|
||||
'choose_template',
|
||||
'choose_template_to_copy',
|
||||
@@ -368,6 +369,7 @@ class MainNavigation(Navigation):
|
||||
'add_service_template',
|
||||
'check_messages',
|
||||
'check_notification',
|
||||
'choose_from_contact_list',
|
||||
'choose_template',
|
||||
'choose_template_to_copy',
|
||||
'confirm_redact_template',
|
||||
@@ -658,6 +660,7 @@ class CaseworkNavigation(Navigation):
|
||||
|
||||
mapping = {
|
||||
'send-one-off': {
|
||||
'choose_from_contact_list',
|
||||
'choose_template',
|
||||
'send_one_off',
|
||||
'send_one_off_step',
|
||||
@@ -1018,6 +1021,7 @@ class OrgNavigation(Navigation):
|
||||
'check_notification',
|
||||
'no_cookie.check_notification_preview',
|
||||
'choose_account',
|
||||
'choose_from_contact_list',
|
||||
'choose_service',
|
||||
'choose_template',
|
||||
'choose_template_to_copy',
|
||||
|
||||
53
app/templates/views/send-contact-list.html
Normal file
53
app/templates/views/send-contact-list.html
Normal file
@@ -0,0 +1,53 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/big-number.html" import big_number -%}
|
||||
{% from "components/message-count-label.html" import recipient_count_label %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/table.html" import list_table, field, right_aligned_field_heading, row_heading %}
|
||||
|
||||
{% block service_page_title %}
|
||||
Choose a saved contact list
|
||||
{% endblock %}
|
||||
|
||||
{% block maincolumn_content %}
|
||||
|
||||
{{ page_header(
|
||||
'Choose a saved contact list',
|
||||
back_link=url_for('.send_one_off', service_id=current_service.id, template_id=template.id)
|
||||
) }}
|
||||
|
||||
<div class='dashboard-table ajax-block-container'>
|
||||
{% call(item, row_number) list_table(
|
||||
contact_lists,
|
||||
caption="Existing contact lists",
|
||||
caption_visible=False,
|
||||
empty_message=(
|
||||
'You don’t have any contact lists yet'
|
||||
),
|
||||
field_headings=[
|
||||
'File',
|
||||
'Status'
|
||||
],
|
||||
field_headings_visible=False
|
||||
) %}
|
||||
{% call row_heading() %}
|
||||
<div class="file-list">
|
||||
<a class="file-list-filename-large govuk-link govuk-link--no-visited-state" href="{{ url_for('main.send_from_contact_list', service_id=current_service.id, template_id=template.id, contact_list_id=item.id) }}">{{ item.original_file_name }}</a>
|
||||
<span class="file-list-hint">
|
||||
Uploaded {{ item.created_at|format_datetime_relative }}
|
||||
</span>
|
||||
</div>
|
||||
{% endcall %}
|
||||
{% call field() %}
|
||||
{{ big_number(
|
||||
item.row_count,
|
||||
smallest=True,
|
||||
label=recipient_count_label(
|
||||
item.row_count,
|
||||
item.template_type
|
||||
)
|
||||
) }}
|
||||
{% endcall %}
|
||||
{% endcall %}
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user