mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-01 12:19:47 -04:00
Let users search for letters
Like we have search by email address or phone number, finding an individual letter is a common task. At the moment users are having to click through pages and pages of letters to find the one they’re looking for. Users of the API will also be able to search by reference, same as for emails and text messages. But we only show this hint text to users who have some API keys.
This commit is contained in:
@@ -169,8 +169,12 @@ def view_notifications(service_id, message_type=None):
|
||||
things_you_can_search_by={
|
||||
'email': ['email address'],
|
||||
'sms': ['phone number'],
|
||||
'letter': [],
|
||||
None: ['email address', 'phone number'],
|
||||
# This should become ‘postal address’ not ‘first line…’ once
|
||||
# we’ve finished populating normalised addresses
|
||||
'letter': ['first line of address', 'file name'],
|
||||
# We say recipient here because combining all 3 types, plus
|
||||
# reference gets too long for the hint text
|
||||
None: ['recipient'],
|
||||
}.get(message_type) + {
|
||||
True: ['reference'],
|
||||
False: [],
|
||||
|
||||
@@ -34,42 +34,39 @@
|
||||
'counts'
|
||||
) }}
|
||||
|
||||
{% call form_wrapper(
|
||||
action=url_for('.view_notifications', service_id=current_service.id, message_type=message_type),
|
||||
class="govuk-grid-row"
|
||||
) %}
|
||||
<div class="govuk-grid-column-three-quarters {% if message_type == 'sms' %}extra-tracking{% endif %}">
|
||||
{{ textbox(
|
||||
search_form.to,
|
||||
width='1-1',
|
||||
label=things_you_can_search_by|formatted_list(
|
||||
conjunction='or',
|
||||
before_each='',
|
||||
after_each='',
|
||||
prefix='Search by',
|
||||
prefix_plural='Search by'
|
||||
)
|
||||
) }}
|
||||
</div>
|
||||
<div class="govuk-grid-column-one-quarter">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{{ govukButton({
|
||||
"text": "Search",
|
||||
"classes": "search-form__button"
|
||||
}) }}
|
||||
</div>
|
||||
{% endcall %}
|
||||
|
||||
{% call form_wrapper(id="search-form") %}
|
||||
<input type="hidden" name="to" value="{{ search_form.to.data }}">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{% endcall %}
|
||||
{% else %}
|
||||
{% call form_wrapper(id="search-form") %}
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
|
||||
{% endcall %}
|
||||
{% endif %}
|
||||
|
||||
{% call form_wrapper(
|
||||
action=url_for('.view_notifications', service_id=current_service.id, message_type=message_type),
|
||||
class="govuk-grid-row"
|
||||
) %}
|
||||
<div class="govuk-grid-column-three-quarters {% if message_type == 'sms' %}extra-tracking{% endif %}">
|
||||
{{ textbox(
|
||||
search_form.to,
|
||||
width='1-1',
|
||||
label=things_you_can_search_by|formatted_list(
|
||||
conjunction='or',
|
||||
before_each='',
|
||||
after_each='',
|
||||
prefix='Search by',
|
||||
prefix_plural='Search by'
|
||||
)
|
||||
) }}
|
||||
</div>
|
||||
<div class="govuk-grid-column-one-quarter">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{{ govukButton({
|
||||
"text": "Search",
|
||||
"classes": "search-form__button"
|
||||
}) }}
|
||||
</div>
|
||||
{% endcall %}
|
||||
|
||||
{% call form_wrapper(id="search-form") %}
|
||||
<input type="hidden" name="to" value="{{ search_form.to.data }}">
|
||||
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
|
||||
{% endcall %}
|
||||
|
||||
{% if current_user.has_permissions('view_activity') %}
|
||||
<p class="bottom-gutter">
|
||||
<a href="{{ download_link }}" download="download" class="govuk-link govuk-link--no-visited-state govuk-!-font-weight-bold">Download this report</a>
|
||||
|
||||
@@ -340,7 +340,7 @@ def test_shows_message_when_no_notifications(
|
||||
(
|
||||
{},
|
||||
{},
|
||||
'Search by email address or phone number',
|
||||
'Search by recipient',
|
||||
'',
|
||||
),
|
||||
(
|
||||
@@ -373,6 +373,16 @@ def test_shows_message_when_no_notifications(
|
||||
'Search by email address',
|
||||
'test@example.com',
|
||||
),
|
||||
(
|
||||
{
|
||||
'message_type': 'letter',
|
||||
},
|
||||
{
|
||||
'to': 'Firstname Lastname',
|
||||
},
|
||||
'Search by first line of address or file name',
|
||||
'Firstname Lastname',
|
||||
),
|
||||
])
|
||||
def test_search_recipient_form(
|
||||
client_request,
|
||||
@@ -413,9 +423,10 @@ def test_search_recipient_form(
|
||||
|
||||
|
||||
@pytest.mark.parametrize('message_type, expected_search_box_label', [
|
||||
(None, 'Search by email address, phone number or reference'),
|
||||
(None, 'Search by recipient or reference'),
|
||||
('sms', 'Search by phone number or reference'),
|
||||
('email', 'Search by email address or reference'),
|
||||
('letter', 'Search by first line of address, file name or reference'),
|
||||
])
|
||||
def test_api_users_are_told_they_can_search_by_reference_when_service_has_api_keys(
|
||||
client_request,
|
||||
@@ -437,7 +448,7 @@ def test_api_users_are_told_they_can_search_by_reference_when_service_has_api_ke
|
||||
|
||||
|
||||
@pytest.mark.parametrize('message_type, expected_search_box_label', [
|
||||
(None, 'Search by email address or phone number'),
|
||||
(None, 'Search by recipient'),
|
||||
('sms', 'Search by phone number'),
|
||||
('email', 'Search by email address'),
|
||||
])
|
||||
@@ -615,10 +626,10 @@ def test_redacts_templates_that_should_be_redacted(
|
||||
"message_type, tablist_visible, search_bar_visible", [
|
||||
('email', True, True),
|
||||
('sms', True, True),
|
||||
('letter', False, False)
|
||||
('letter', False, True)
|
||||
]
|
||||
)
|
||||
def test_big_numbers_and_search_dont_show_for_letters(
|
||||
def test_big_numbers_dont_show_for_letters(
|
||||
client_request,
|
||||
service_one,
|
||||
mock_get_notifications,
|
||||
|
||||
Reference in New Issue
Block a user