diff --git a/app/main/__init__.py b/app/main/__init__.py index c42d86d65..2a6bff976 100644 --- a/app/main/__init__.py +++ b/app/main/__init__.py @@ -28,7 +28,6 @@ from app.main.views import ( # noqa providers, find_users, platform_admin, - letter_jobs, email_branding, conversation, organisations, diff --git a/app/main/views/letter_jobs.py b/app/main/views/letter_jobs.py deleted file mode 100644 index ae3e733e9..000000000 --- a/app/main/views/letter_jobs.py +++ /dev/null @@ -1,36 +0,0 @@ -from flask import redirect, render_template, request, session, url_for -from flask_login import login_required - -from app import letter_jobs_client -from app.main import main -from app.utils import user_is_platform_admin - - -@main.route("/letter-jobs", methods=['GET', 'POST']) -@login_required -@user_is_platform_admin -def letter_jobs(): - letter_jobs_list = letter_jobs_client.get_letter_jobs() - - if request.method == 'POST': - if len(request.form.getlist('job_id')) > 0: - job_ids = request.form.getlist('job_id') - session['job_ids'] = job_ids - - response = letter_jobs_client.send_letter_jobs(job_ids) - msg = response['response'] - else: - msg = 'No jobs selected' - - session['msg'] = msg - - return redirect(url_for('main.letter_jobs')) - - msg = session.pop('msg', None) - job_ids = session.pop('job_ids', None) - if job_ids: - for job_id in job_ids: - job = [j for j in letter_jobs_list if job_id == j['id']][0] - job['sending'] = 'sending' - - return render_template('views/letter-jobs.html', letter_jobs_list=letter_jobs_list, message=msg) diff --git a/app/navigation.py b/app/navigation.py index fdb13eef6..5236a261a 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -170,7 +170,6 @@ class HeaderNavigation(Navigation): 'information_security', 'invite_org_user', 'invite_user', - 'letter_jobs', 'link_service_to_organisation', 'manage_org_users', 'manage_template_folder', @@ -439,7 +438,6 @@ class MainNavigation(Navigation): 'information_security', 'integration_testing', 'invite_org_user', - 'letter_jobs', 'live_services', 'manage_org_users', 'new_password', @@ -626,7 +624,6 @@ class CaseworkNavigation(Navigation): 'integration_testing', 'invite_org_user', 'invite_user', - 'letter_jobs', 'link_service_to_organisation', 'live_services', 'manage_org_users', @@ -861,7 +858,6 @@ class OrgNavigation(Navigation): 'information_security', 'integration_testing', 'invite_user', - 'letter_jobs', 'link_service_to_organisation', 'live_services', 'manage_template_folder', diff --git a/app/notify_client/letter_jobs_client.py b/app/notify_client/letter_jobs_client.py index 3dd2a39cd..da6a070e1 100644 --- a/app/notify_client/letter_jobs_client.py +++ b/app/notify_client/letter_jobs_client.py @@ -6,15 +6,6 @@ class LetterJobsClient(NotifyAdminAPIClient): def __init__(self): super().__init__("a" * 73, "b") - def get_letter_jobs(self): - return self.get(url='/letter-jobs')['data'] - - def send_letter_jobs(self, job_ids): - return self.post( - url='/send-letter-jobs', - data={"job_ids": job_ids} - )['data'] - def submit_returned_letters(self, references): return self.post( url='/letters/returned', diff --git a/app/templates/views/letter-jobs.html b/app/templates/views/letter-jobs.html deleted file mode 100644 index 916160fcf..000000000 --- a/app/templates/views/letter-jobs.html +++ /dev/null @@ -1,52 +0,0 @@ -{% extends "views/platform-admin/_base_template.html" %} -{% from "components/page-footer.html" import page_footer %} -{% from "components/form.html" import form_wrapper %} - -{% block per_page_title %} - Letter jobs -{% endblock %} - -{% block platform_admin_content %} - -

Letter jobs

- - {% call form_wrapper() %} -

- - - - - - - - - - - - {% for job in letter_jobs_list %} - - - - - - - - - - {% endfor %} - -
Service nameJob IDCountStatusCreated at
{{ job.service_name.name }}{{ job.id }}{{ job.notification_count }}{{ job.job_status }}{{ job.created_at|format_datetime_short }}{{ job.sending }}
-

- {{ page_footer('Send') }} - - {% if message %} -

- {{ message }} - {% if message != 'No jobs selected' %} -

Refresh page to see status updates
- {% endif %} -

- {% endif %} - {% endcall %} - -{% endblock %} diff --git a/app/templates/views/platform-admin/_base_template.html b/app/templates/views/platform-admin/_base_template.html index 3f3fcade1..68f41c504 100644 --- a/app/templates/views/platform-admin/_base_template.html +++ b/app/templates/views/platform-admin/_base_template.html @@ -18,7 +18,6 @@ ('Organisations', url_for('main.organisations')), ('Providers', url_for('main.view_providers')), ('Email branding', url_for('main.email_branding')), - ('Letter jobs', url_for('main.letter_jobs')), ('Inbound SMS numbers', url_for('main.inbound_sms_admin')), ('Find users by email', url_for('main.find_users_by_email')), ('Email Complaints', url_for('main.platform_admin_list_complaints')), diff --git a/tests/app/main/views/test_letter_jobs.py b/tests/app/main/views/test_letter_jobs.py deleted file mode 100644 index 57dc906aa..000000000 --- a/tests/app/main/views/test_letter_jobs.py +++ /dev/null @@ -1,117 +0,0 @@ -from enum import IntEnum - -from bs4 import BeautifulSoup -from flask import url_for - -from app import format_datetime_short - -valid_letter_jobs = [ - { - 'service_name': {'name': 'test_name'}, - 'id': 'test_id', - 'notification_count': 2, - 'job_status': 'ready to send', - 'created_at': '2017-04-01T12:00:00' - }, - { - 'service_name': {'name': 'test_name 2'}, - 'id': 'test_id 2', - 'notification_count': 1, - 'job_status': 'sent to dvla', - 'created_at': '2017-04-02T13:00:00' - }, - { - 'service_name': {'name': 'test_name 3'}, - 'id': 'test_id 3', - 'notification_count': 1, - 'job_status': 'in progress', - 'created_at': '2017-04-03T14:00:00' - } -] - -send_letter_jobs_response = {"response": "Task created to send files to DVLA"} - - -class LetterJobsHeader(IntEnum): - SERVICE_NAME = 0 - JOB_ID = 1 - NOTIFICATION_COUNT = 2 - JOB_STATUS = 3 - CREATED_AT = 4 - CHECKBOX = 5 - TEMP_STATUS = 6 - - -def test_get_letter_jobs_returns_list_of_all_letter_jobs(logged_in_platform_admin_client, mocker): - mock_get_letters = mocker.patch('app.letter_jobs_client.get_letter_jobs', return_value=valid_letter_jobs) - - response = logged_in_platform_admin_client.get(url_for('main.letter_jobs')) - - assert mock_get_letters.called - assert response.status_code == 200 - - page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - assert page.h1.string == 'Letter jobs' - - rows = page.select('table tbody tr') - - assert len(rows) == len(valid_letter_jobs) - - for row_pos in range(len(rows)): - cols = rows[row_pos].find_all('td') - assert valid_letter_jobs[row_pos]['service_name']['name'] == cols[LetterJobsHeader.SERVICE_NAME].text - assert valid_letter_jobs[row_pos]['id'] == cols[LetterJobsHeader.JOB_ID].text - assert valid_letter_jobs[row_pos]['notification_count'] == int(cols[LetterJobsHeader.NOTIFICATION_COUNT].text) - assert valid_letter_jobs[row_pos]['job_status'] == cols[LetterJobsHeader.JOB_STATUS].text - assert format_datetime_short( - valid_letter_jobs[row_pos]['created_at']) == cols[LetterJobsHeader.CREATED_AT].text - if not (valid_letter_jobs[row_pos]['job_status'] == 'ready to send' or - valid_letter_jobs[row_pos]['job_status'] == 'sent to dvla'): - assert 'disabled' in str(cols[LetterJobsHeader.CHECKBOX]) - - -def test_post_letter_jobs_select_1_letter_job_submits_1_job(logged_in_platform_admin_client, mocker): - letter_jobs_first_selected = {'job_id': ['test_id']} - - mock_get_letters = mocker.patch('app.letter_jobs_client.get_letter_jobs', return_value=valid_letter_jobs) - mock_send_letters = mocker.patch('app.letter_jobs_client.send_letter_jobs', return_value=send_letter_jobs_response) - - response = logged_in_platform_admin_client.post(url_for('main.letter_jobs'), data=letter_jobs_first_selected, - follow_redirects=True) - - assert mock_get_letters.called - assert mock_send_letters.called - assert response.status_code == 200 - - page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - - rows = page.select('table tbody tr') - - assert len(rows) == len(valid_letter_jobs) - - colr0 = rows[0].find_all('td') - colr1 = rows[1].find_all('td') - colr2 = rows[2].find_all('td') - - assert colr0[LetterJobsHeader.TEMP_STATUS].text == "sending" - assert colr1[LetterJobsHeader.TEMP_STATUS].text == "" - assert colr2[LetterJobsHeader.TEMP_STATUS].text == "" - - message = page.find('p', attrs={'id': 'message'}).text - assert "Task created to send files to DVLA" in message - - -def test_post_letter_jobs_none_selected_shows_message(logged_in_platform_admin_client, mocker): - mock_get_letters = mocker.patch('app.letter_jobs_client.get_letter_jobs', return_value=valid_letter_jobs) - mock_send_letters = mocker.patch('app.letter_jobs_client.send_letter_jobs', return_value=send_letter_jobs_response) - - response = logged_in_platform_admin_client.post(url_for('main.letter_jobs'), data={}, follow_redirects=True) - - assert mock_get_letters.called - assert not mock_send_letters.called - assert response.status_code == 200 - - page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser') - message = page.find('p', attrs={'id': 'message'}).text - - assert "No jobs selected" in message