mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-02 17:48:50 -04:00
Add form to let users switch basic view on and off
This commit adds radio buttons to the ‘basic view’ page. This will let users choose whether basic view is on or off for their service. As before, this page will only be linked to if a service already has basic view, so this commit does not launch the new feature.
This commit is contained in:
@@ -677,6 +677,20 @@ class ServiceSwitchLettersForm(StripWhitespaceForm):
|
||||
)
|
||||
|
||||
|
||||
class ServiceBasicViewForm(StripWhitespaceForm):
|
||||
|
||||
def __init__(self, enabled):
|
||||
super().__init__(enabled='on' if enabled else 'off')
|
||||
|
||||
enabled = RadioField(
|
||||
'Basic view',
|
||||
choices=[
|
||||
('on', 'On'),
|
||||
('off', 'Off'),
|
||||
],
|
||||
)
|
||||
|
||||
|
||||
class ServiceSetBranding(StripWhitespaceForm):
|
||||
|
||||
def __init__(self, email_branding=[], *args, **kwargs):
|
||||
|
||||
@@ -34,6 +34,7 @@ from app.main.forms import (
|
||||
OrganisationTypeForm,
|
||||
RenameServiceForm,
|
||||
RequestToGoLiveForm,
|
||||
ServiceBasicViewForm,
|
||||
ServiceContactLinkForm,
|
||||
ServiceEditInboundNumberForm,
|
||||
ServiceInboundNumberForm,
|
||||
@@ -635,12 +636,25 @@ def service_set_auth_type(service_id):
|
||||
)
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/service-settings/set-basic-view", methods=['GET'])
|
||||
@main.route("/services/<service_id>/service-settings/set-basic-view", methods=['GET', 'POST'])
|
||||
@login_required
|
||||
@user_has_permissions('manage_service')
|
||||
def service_set_basic_view(service_id):
|
||||
form = ServiceBasicViewForm(
|
||||
enabled='caseworking' in current_service['permissions']
|
||||
)
|
||||
if form.validate_on_submit():
|
||||
force_service_permission(
|
||||
service_id,
|
||||
'caseworking',
|
||||
on=(form.enabled.data == 'on'),
|
||||
)
|
||||
return redirect(
|
||||
url_for('.service_settings', service_id=service_id)
|
||||
)
|
||||
return render_template(
|
||||
'views/service-settings/set-basic-view.html',
|
||||
form=form,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/radios.html" import radios %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
|
||||
{% block service_page_title %}
|
||||
@@ -9,7 +9,7 @@
|
||||
{% block maincolumn_content %}
|
||||
|
||||
<div class="grid-row">
|
||||
<div class="column-five-sixths">
|
||||
<form method="post" class="column-five-sixths">
|
||||
<h1 class="heading-large">Basic view</h1>
|
||||
<p>
|
||||
Basic view lets you restrict a team member to only:
|
||||
@@ -21,11 +21,13 @@
|
||||
<p>
|
||||
You’ll get to choose which team members have basic view.
|
||||
</p>
|
||||
{{ radios(form.enabled, hide_legend=True) }}
|
||||
{{ page_footer(
|
||||
'Save',
|
||||
back_link=url_for('.service_settings', service_id=current_service.id),
|
||||
back_link_text='Back to settings'
|
||||
) }}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -2390,14 +2390,56 @@ def test_invitation_pages(
|
||||
assert normalize_spaces(page.select('main p')[0].text) == expected_p
|
||||
|
||||
|
||||
@pytest.mark.parametrize('permissions, expected_selected', [
|
||||
('caseworking', 'on'),
|
||||
('', 'off'),
|
||||
])
|
||||
def test_see_basic_view_page(
|
||||
client_request,
|
||||
service_one,
|
||||
permissions,
|
||||
expected_selected,
|
||||
):
|
||||
service_one['permissions'] = permissions
|
||||
page = client_request.get(
|
||||
"main.service_set_basic_view",
|
||||
service_id=SERVICE_ONE_ID
|
||||
)
|
||||
assert page.h1.text.strip() == 'Basic view'
|
||||
assert page.select_one('input[checked]')['value'] == expected_selected
|
||||
|
||||
|
||||
@pytest.mark.parametrize('value, expected_updated_permissions', [
|
||||
('on', {'email', 'caseworking', 'sms'}),
|
||||
('off', {'email', 'sms'}),
|
||||
])
|
||||
def test_update_basic_view(
|
||||
mocker,
|
||||
client_request,
|
||||
service_one,
|
||||
value,
|
||||
expected_updated_permissions,
|
||||
):
|
||||
mocked_update = mocker.patch(
|
||||
'app.service_api_client.update_service_with_properties',
|
||||
return_value=service_one,
|
||||
)
|
||||
client_request.post(
|
||||
"main.service_set_basic_view",
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_data={
|
||||
'enabled': value,
|
||||
},
|
||||
_expected_status=302,
|
||||
_expected_redirect=url_for(
|
||||
'main.service_settings',
|
||||
service_id=SERVICE_ONE_ID,
|
||||
_external=True,
|
||||
),
|
||||
)
|
||||
assert set(
|
||||
mocked_update.call_args[0][1]['permissions']
|
||||
) == expected_updated_permissions
|
||||
|
||||
|
||||
def test_service_settings_when_inbound_number_is_not_set(
|
||||
|
||||
Reference in New Issue
Block a user