diff --git a/app/assets/javascripts/conditionalRadios.js b/app/assets/javascripts/conditionalRadios.js deleted file mode 100644 index 40de0b10e..000000000 --- a/app/assets/javascripts/conditionalRadios.js +++ /dev/null @@ -1,42 +0,0 @@ -(function(Modules) { - "use strict"; - - Modules.ConditionalRadios = function() { - - this.start = function(component) { - - const $radios = $('[type=radio]', $(component)), - $checkboxes = $('[type=checkbox]', $(component)); - - let clearable = true; - - let clearInvalidSelections = function() { - if (!clearable) { - clearable = true; - return; - } - $radios.each(function() { - let checked = $(this).is(':checked'); - $('#panel-' + $(this).attr('value')) - .each(function() { - if (!checked) { - $('[type=checkbox]', this).removeAttr('checked'); - } - }); - }); - }; - - let selectParent = function() { - clearable = false; - let parentValue = $(this).parents("[id^='panel-']").attr('id').replace('panel-', ''); - $('[value=' + parentValue + ']').trigger('click'); - }; - - $checkboxes.on('click', selectParent); - $radios.on('click', clearInvalidSelections); - clearInvalidSelections(); - - }; - }; - -})(window.GOVUK.Modules); diff --git a/app/assets/stylesheets/components/navigation.scss b/app/assets/stylesheets/components/navigation.scss index 0e4dedfe1..d6c3531d7 100644 --- a/app/assets/stylesheets/components/navigation.scss +++ b/app/assets/stylesheets/components/navigation.scss @@ -14,29 +14,6 @@ margin: 0 0 0 0; } - &-basic-view { - - &-preview { - @include bold-16; - display: inline-block; - background: $yellow; - padding: 4px 10px 3px 10px; - position: relative; - top: -1px; - margin-left: 8px; - margin-top: -1px; - margin-bottom: -7px; - } - - &-back-link { - @include core-16; - display: inline-block; - font-weight: normal; - margin-left: 10px; - } - - } - &-switch { @include core-16; diff --git a/app/main/forms.py b/app/main/forms.py index 8e36e9068..9f968cd6a 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -651,20 +651,6 @@ 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): diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 11b79cf49..539ea21cd 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -34,7 +34,6 @@ from app.main.forms import ( OrganisationTypeForm, RenameServiceForm, RequestToGoLiveForm, - ServiceBasicViewForm, ServiceContactLinkForm, ServiceDataRetentionEditForm, ServiceDataRetentionForm, @@ -631,43 +630,6 @@ def service_set_auth_type(service_id): ) -@main.route("/services//service-settings/set-basic-view", methods=['GET', 'POST']) -@login_required -@user_has_permissions('manage_service', 'send_messages') -def service_set_basic_view(service_id): - - if current_user.previewing_basic_view: - session.pop('basic', None) - - if not current_user.has_permissions('manage_service'): - abort(403) - - form = ServiceBasicViewForm( - enabled=current_service.has_permission('caseworking') - ) - 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, - ) - - -@main.route("/services//preview-basic-view") -@login_required -@user_has_permissions('manage_service') -def preview_basic_view(service_id): - session['basic'] = True - return redirect(url_for('.service_dashboard', service_id=service_id)) - - @main.route("/services//service-settings/letter-contacts", methods=['GET']) @login_required @user_has_permissions('manage_service', 'manage_api_keys') diff --git a/app/navigation.py b/app/navigation.py index b4467cdcf..ee9b574c8 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -178,7 +178,6 @@ class HeaderNavigation(Navigation): 'old_using_notify', 'organisation_dashboard', 'organisation_settings', - 'preview_basic_view', 'privacy', 'public_agreement', 'public_download_agreement', @@ -220,7 +219,6 @@ class HeaderNavigation(Navigation): 'service_name_change_confirm', 'service_preview_email_branding', 'service_set_auth_type', - 'service_set_basic_view', 'service_set_contact_link', 'service_set_email', 'service_set_email_branding', @@ -342,7 +340,6 @@ class MainNavigation(Navigation): 'service_name_change_confirm', 'service_preview_email_branding', 'service_set_auth_type', - 'service_set_basic_view', 'service_set_contact_link', 'service_set_email', 'service_set_email_branding', @@ -440,7 +437,6 @@ class MainNavigation(Navigation): 'organisations', 'platform_admin', 'platform_admin_list_complaints', - 'preview_basic_view', 'pricing', 'privacy', 'public_agreement', @@ -624,7 +620,6 @@ class CaseworkNavigation(Navigation): 'organisations', 'platform_admin', 'platform_admin_list_complaints', - 'preview_basic_view', 'pricing', 'privacy', 'public_agreement', @@ -665,7 +660,6 @@ class CaseworkNavigation(Navigation): 'service_name_change_confirm', 'service_preview_email_branding', 'service_set_auth_type', - 'service_set_basic_view', 'service_set_contact_link', 'service_set_email', 'service_set_email_branding', @@ -848,7 +842,6 @@ class OrgNavigation(Navigation): 'organisations', 'platform_admin', 'platform_admin_list_complaints', - 'preview_basic_view', 'pricing', 'privacy', 'public_agreement', @@ -892,7 +885,6 @@ class OrgNavigation(Navigation): 'service_name_change_confirm', 'service_preview_email_branding', 'service_set_auth_type', - 'service_set_basic_view', 'service_set_contact_link', 'service_set_email', 'service_set_email_branding', diff --git a/app/notify_client/models.py b/app/notify_client/models.py index ad775f679..87a977a8a 100644 --- a/app/notify_client/models.py +++ b/app/notify_client/models.py @@ -117,10 +117,6 @@ class User(UserMixin): def permissions(self, permissions): raise AttributeError("Read only property") - @property - def previewing_basic_view(self): - return bool(session.get('basic')) - def has_permissions(self, *permissions, restrict_admin_usage=False): unknown_permissions = set(permissions) - all_permissions @@ -131,12 +127,6 @@ class User(UserMixin): service_id = _get_service_id_from_view_args() org_id = _get_org_id_from_view_args() - if self.previewing_basic_view: - return self._permissions.get(service_id) and ( - 'send_messages' in permissions or - permissions == () - ) - if not service_id and not org_id: # we shouldn't have any pages that require permissions, but don't specify a service or organisation. # use @user_is_platform_admin for platform admin only pages diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index b884e3e40..f17be7f82 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -46,18 +46,6 @@ }} {% endcall %} - {% call settings_row(if_has_permission='caseworking') %} - {{ text_field('Basic view') }} - {{ boolean_field('caseworking' in current_service.permissions) }} - {{ edit_field( - 'Change', - url_for('.service_set_basic_view', - service_id=current_service.id), - permissions=['manage_service'] - ) - }} - {% endcall %} - {% call settings_row(if_has_permission='upload_document') %} {{ text_field('Contact link') }} {{ text_field(current_service.contact_link, truncate=true) }} @@ -372,11 +360,6 @@ {{ 'Stop user auth type editing' if 'email_auth' in current_service.permissions else 'Allow user auth type editing' }} -
  • - - Set basic view - -
  • {{ 'Stop uploading documents' if 'upload_document' in current_service.permissions else 'Allow to upload documents' }} diff --git a/app/templates/views/service-settings/set-basic-view.html b/app/templates/views/service-settings/set-basic-view.html deleted file mode 100644 index 21c0aed1f..000000000 --- a/app/templates/views/service-settings/set-basic-view.html +++ /dev/null @@ -1,39 +0,0 @@ -{% extends "withnav_template.html" %} -{% from "components/radios.html" import radios %} -{% from "components/page-footer.html" import page_footer %} - -{% block service_page_title %} - Basic view -{% endblock %} - -{% block maincolumn_content %} - - - -{% endblock %} diff --git a/app/templates/withnav_template.html b/app/templates/withnav_template.html index c03b77803..4f3221103 100644 --- a/app/templates/withnav_template.html +++ b/app/templates/withnav_template.html @@ -9,10 +9,6 @@ diff --git a/gulpfile.babel.js b/gulpfile.babel.js index 96384750e..823e237f0 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -73,7 +73,6 @@ gulp.task('javascripts', () => gulp paths.src + 'javascripts/errorTracking.js', paths.src + 'javascripts/preventDuplicateFormSubmissions.js', paths.src + 'javascripts/fullscreenTable.js', - paths.src + 'javascripts/conditionalRadios.js', paths.src + 'javascripts/emailPreviewPane.js', paths.src + 'javascripts/main.js' ]) diff --git a/tests/app/main/views/test_activity.py b/tests/app/main/views/test_activity.py index d1f493e13..74d2e0c6b 100644 --- a/tests/app/main/views/test_activity.py +++ b/tests/app/main/views/test_activity.py @@ -211,7 +211,7 @@ def test_link_to_download_notifications( ) == expected_download_link(service_id=SERVICE_ONE_ID) -def test_download_not_available_in_basic_view( +def test_download_not_available_to_users_without_dashboard( client_request, active_caseworking_user, ): diff --git a/tests/app/main/views/test_jobs.py b/tests/app/main/views/test_jobs.py index c8bc55604..04de7bcb6 100644 --- a/tests/app/main/views/test_jobs.py +++ b/tests/app/main/views/test_jobs.py @@ -71,7 +71,7 @@ from tests.conftest import ( )), ]) @freeze_time("2012-12-12 12:12") -def test_jobs_page_shows_scheduled_jobs_in_basic_view( +def test_jobs_page_shows_scheduled_jobs_if_user_doesnt_have_dashboard( client_request, service_one, active_user_with_permissions, diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py index 5f9c18d95..a7d14221a 100644 --- a/tests/app/main/views/test_service_settings.py +++ b/tests/app/main/views/test_service_settings.py @@ -173,11 +173,10 @@ def test_should_show_overview( 'Send letters Off Change', ]), - (['letters', 'caseworking'], [ + (['letters'], [ 'Service name service one Change', 'Sign-in method Text message code Change', - 'Basic view On Change', 'Label Value Action', 'Send emails Off Change', @@ -2440,135 +2439,6 @@ 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('main a')['href'] == url_for( - 'main.preview_basic_view', - service_id=SERVICE_ONE_ID, - ) - 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_preview_basic_view( - client_request, - mock_get_service_templates, - mock_has_no_jobs, -): - page = client_request.get( - "main.preview_basic_view", - service_id=SERVICE_ONE_ID, - _follow_redirects=True, - ) - - with client_request.session_transaction() as session: - assert session['basic'] is True - - assert page.h1.text.strip() == 'Templates' - page.select('.navigation-service-basic-view-preview') - assert normalize_spaces(page.select_one('.navigation-service').text) == ( - 'service one ' - 'Preview of basic view ' - 'Back to settings ' - 'Switch service' - ) - page.select_one('a.navigation-service-basic-view-back-link')['href'] == url_for( - 'main.service_set_basic_view', - service_id=SERVICE_ONE_ID, - ) - - client_request.get( - "main.service_set_basic_view", - service_id=SERVICE_ONE_ID, - ) - - with client_request.session_transaction() as session: - assert 'basic' not in session - - -def test_cant_preview_basic_view_for_another_service( - client_request, - mock_get_service_templates, - mock_has_no_jobs, - fake_uuid, -): - client_request.get( - "main.preview_basic_view", - service_id=SERVICE_ONE_ID, - _follow_redirects=True, - _expected_status=200, - ) - client_request.get( - "main.preview_basic_view", - service_id=fake_uuid, - _expected_status=403, - ) - - -def test_actual_basic_view_cant_escape_basic_view( - client_request, - active_caseworking_user, - mock_get_service_templates, -): - client_request.login(active_caseworking_user) - client_request.get( - "main.preview_basic_view", - service_id=SERVICE_ONE_ID, - _expected_status=403, - ) - client_request.get( - "main.service_set_basic_view", - service_id=SERVICE_ONE_ID, - _expected_status=403, - ) - - def test_service_settings_when_inbound_number_is_not_set( logged_in_client, service_one,