mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 10:28:41 -04:00
Merge pull request #2448 from alphagov/alphabetical-sort-letter-brandings
Make letter brandings easier to find with sorting and filtering
This commit is contained in:
+8
-1
@@ -785,7 +785,14 @@ class LetterBranding(StripWhitespaceForm):
|
|||||||
|
|
||||||
def __init__(self, choices=[], *args, **kwargs):
|
def __init__(self, choices=[], *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.dvla_org_id.choices = choices
|
self.dvla_org_id.choices = list(sorted(
|
||||||
|
choices,
|
||||||
|
key=lambda choice: (
|
||||||
|
choice[0] != kwargs.get('dvla_org_id'),
|
||||||
|
choice[0] != '001',
|
||||||
|
choice[1],
|
||||||
|
),
|
||||||
|
))
|
||||||
|
|
||||||
dvla_org_id = RadioField(
|
dvla_org_id = RadioField(
|
||||||
'Which logo should this service’s letter have?',
|
'Which logo should this service’s letter have?',
|
||||||
|
|||||||
@@ -832,7 +832,10 @@ def service_preview_email_branding(service_id):
|
|||||||
@user_is_platform_admin
|
@user_is_platform_admin
|
||||||
def set_letter_branding(service_id):
|
def set_letter_branding(service_id):
|
||||||
|
|
||||||
form = LetterBranding(choices=email_branding_client.get_letter_email_branding().items())
|
form = LetterBranding(
|
||||||
|
choices=email_branding_client.get_letter_email_branding().items(),
|
||||||
|
dvla_org_id=current_service.dvla_organisation,
|
||||||
|
)
|
||||||
|
|
||||||
if form.validate_on_submit():
|
if form.validate_on_submit():
|
||||||
current_service.update(
|
current_service.update(
|
||||||
@@ -840,11 +843,10 @@ def set_letter_branding(service_id):
|
|||||||
)
|
)
|
||||||
return redirect(url_for('.service_settings', service_id=service_id))
|
return redirect(url_for('.service_settings', service_id=service_id))
|
||||||
|
|
||||||
form.dvla_org_id.data = current_service.dvla_organisation
|
|
||||||
|
|
||||||
return render_template(
|
return render_template(
|
||||||
'views/service-settings/set-letter-branding.html',
|
'views/service-settings/set-letter-branding.html',
|
||||||
form=form,
|
form=form,
|
||||||
|
search_form=SearchTemplatesForm(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{% extends "withnav_template.html" %}
|
{% extends "withnav_template.html" %}
|
||||||
{% from "components/radios.html" import radios %}
|
{% from "components/radios.html" import radios %}
|
||||||
|
{% from "components/live-search.html" import live_search %}
|
||||||
{% from "components/page-footer.html" import page_footer %}
|
{% from "components/page-footer.html" import page_footer %}
|
||||||
{% from "components/form.html" import form_wrapper %}
|
{% from "components/form.html" import form_wrapper %}
|
||||||
|
|
||||||
@@ -10,17 +11,14 @@
|
|||||||
{% block maincolumn_content %}
|
{% block maincolumn_content %}
|
||||||
|
|
||||||
<h1 class="heading-large">Set letter branding</h1>
|
<h1 class="heading-large">Set letter branding</h1>
|
||||||
<div class="grid-row">
|
{% call form_wrapper() %}
|
||||||
<div class="column-three-quarters">
|
{{ live_search(target_selector='.multiple-choice', show=True, form=search_form, label='Search by name') }}
|
||||||
{% call form_wrapper() %}
|
{{ radios(form.dvla_org_id, hide_legend=True) }}
|
||||||
{{ radios(form.dvla_org_id) }}
|
{{ page_footer(
|
||||||
{{ page_footer(
|
'Save',
|
||||||
'Save',
|
back_link=url_for('.service_settings', service_id=current_service.id),
|
||||||
back_link=url_for('.service_settings', service_id=current_service.id),
|
back_link_text='Back to settings'
|
||||||
back_link_text='Back to settings'
|
) }}
|
||||||
) }}
|
{% endcall %}
|
||||||
{% endcall %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -2088,9 +2088,22 @@ def test_set_letter_branding_platform_admin_only(
|
|||||||
assert response.status_code == 403
|
assert response.status_code == 403
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize('current_dvla_org_id, expected_selected', [
|
@pytest.mark.parametrize('current_dvla_org_id, expected_selected, expected_items', [
|
||||||
(None, '001'),
|
(None, '001', (
|
||||||
('500', '500'),
|
('001', 'HM Government'),
|
||||||
|
('999', 'Animal and Plant Health Agency'),
|
||||||
|
('500', 'Land Registry'),
|
||||||
|
)),
|
||||||
|
('500', '500', (
|
||||||
|
('500', 'Land Registry'),
|
||||||
|
('001', 'HM Government'),
|
||||||
|
('999', 'Animal and Plant Health Agency'),
|
||||||
|
)),
|
||||||
|
('999', '999', (
|
||||||
|
('999', 'Animal and Plant Health Agency'),
|
||||||
|
('001', 'HM Government'),
|
||||||
|
('500', 'Land Registry'),
|
||||||
|
)),
|
||||||
])
|
])
|
||||||
def test_set_letter_branding_prepopulates(
|
def test_set_letter_branding_prepopulates(
|
||||||
logged_in_platform_admin_client,
|
logged_in_platform_admin_client,
|
||||||
@@ -2098,12 +2111,23 @@ def test_set_letter_branding_prepopulates(
|
|||||||
mock_get_letter_email_branding,
|
mock_get_letter_email_branding,
|
||||||
current_dvla_org_id,
|
current_dvla_org_id,
|
||||||
expected_selected,
|
expected_selected,
|
||||||
|
expected_items,
|
||||||
):
|
):
|
||||||
if current_dvla_org_id:
|
if current_dvla_org_id:
|
||||||
service_one['dvla_organisation'] = current_dvla_org_id
|
service_one['dvla_organisation'] = current_dvla_org_id
|
||||||
response = logged_in_platform_admin_client.get(url_for('main.set_letter_branding', service_id=service_one['id']))
|
response = logged_in_platform_admin_client.get(url_for('main.set_letter_branding', service_id=service_one['id']))
|
||||||
assert response.status_code == 200
|
assert response.status_code == 200
|
||||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||||
|
|
||||||
|
for element in {'label[for^=dvla_org_id]', 'input[type=radio]'}:
|
||||||
|
assert len(page.select(element)) == len(expected_items)
|
||||||
|
|
||||||
|
for index, expected_item in enumerate(expected_items):
|
||||||
|
expected_value, expected_label = expected_item
|
||||||
|
assert normalize_spaces(page.select('label[for^=dvla_org_id]')[index].text) == expected_label
|
||||||
|
assert page.select('input[type=radio]')[index]['value'] == expected_value
|
||||||
|
|
||||||
|
assert len(page.select('input[checked]')) == 1
|
||||||
assert page.select('input[checked]')[0]['value'] == expected_selected
|
assert page.select('input[checked]')[0]['value'] == expected_selected
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -2492,6 +2492,7 @@ def mock_get_letter_email_branding(mocker):
|
|||||||
return {
|
return {
|
||||||
'001': 'HM Government',
|
'001': 'HM Government',
|
||||||
'500': 'Land Registry',
|
'500': 'Land Registry',
|
||||||
|
'999': 'Animal and Plant Health Agency',
|
||||||
}
|
}
|
||||||
|
|
||||||
return mocker.patch(
|
return mocker.patch(
|
||||||
|
|||||||
Reference in New Issue
Block a user