Merge pull request #3338 from alphagov/remove-permission-checks-uploads

Clean up the codebase after moving everyone to the new uploads page
This commit is contained in:
Chris Hill-Scott
2020-03-26 17:00:16 +00:00
committed by GitHub
5 changed files with 27 additions and 163 deletions

View File

@@ -42,26 +42,10 @@ from app.utils import (
@main.route("/services/<uuid:service_id>/jobs") @main.route("/services/<uuid:service_id>/jobs")
@user_has_permissions() @user_has_permissions()
def view_jobs(service_id): def view_jobs(service_id):
jobs = current_service.get_page_of_jobs(page=request.args.get('page')) return redirect(url_for(
'main.uploads',
prev_page = None service_id=current_service.id,
if jobs.prev_page: ))
prev_page = generate_previous_dict('main.view_jobs', service_id, jobs.current_page)
next_page = None
if jobs.next_page:
next_page = generate_next_dict('main.view_jobs', service_id, jobs.current_page)
return render_template(
'views/jobs/jobs.html',
jobs=jobs,
prev_page=prev_page,
next_page=next_page,
show_scheduled_jobs=(
jobs.current_page == 1
and not current_user.has_permissions('view_activity')
and current_service.scheduled_jobs
),
)
@main.route("/services/<uuid:service_id>/jobs/<uuid:job_id>") @main.route("/services/<uuid:service_id>/jobs/<uuid:job_id>")

View File

@@ -498,10 +498,6 @@ class Service(JSONModel):
key=lambda folder: folder['name'].lower(), key=lambda folder: folder['name'].lower(),
) )
@property
def can_upload_letters(self):
return self.has_permission('letter') and self.has_permission('upload_letters')
@cached_property @cached_property
def all_template_folder_ids(self): def all_template_folder_ids(self):
return {folder['id'] for folder in self.all_template_folders} return {folder['id'] for folder in self.all_template_folders}

View File

@@ -9,26 +9,22 @@
{% block maincolumn_content %} {% block maincolumn_content %}
<h1 class="heading-medium">Uploads</h1> <h1 class="heading-medium">Uploads</h1>
<div class="dashboard"> <div class="dashboard">
{% if show_scheduled_jobs %}
{% with hide_heading = True %}
{% include 'views/jobs/_scheduled.html' %}
{% endwith %}
{% endif %}
{% if jobs %} {% if jobs %}
{% include 'views/dashboard/_jobs.html' %} {% include 'views/dashboard/_jobs.html' %}
{% endif %} {% else %}
{% if not jobs and not show_scheduled_jobs %}
<p class="govuk-body"> <p class="govuk-body">
You have not uploaded any files recently. You have not uploaded any files recently.
</p> </p>
{% if current_service.has_permission('upload_letters') %} {% if current_user.has_permissions('send_messages') %}
{% if current_service.has_permission('letter') %}
<p class="govuk-body">
Upload a letter and Notify will print, pack and post it for you.
</p>
{% endif %}
<p class="govuk-body"> <p class="govuk-body">
Upload a letter and Notify will print, pack and post it for you. To upload a list of contact details, first <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.choose_template', service_id=current_service.id) }}">choose a template</a>.
</p> </p>
{% endif %} {% endif %}
<p class="govuk-body">
To upload a list of contact details, first <a class="govuk-link govuk-link--no-visited-state" href="{{ url_for('main.choose_template', service_id=current_service.id) }}">choose a template</a>.
</p>
{% endif %} {% endif %}
{{ previous_next_navigation(prev_page, next_page) }} {{ previous_next_navigation(prev_page, next_page) }}
{% if current_user.has_permissions('send_messages') %} {% if current_user.has_permissions('send_messages') %}
@@ -38,14 +34,14 @@
"element": "a", "element": "a",
"text": "Upload a letter", "text": "Upload a letter",
"href": url_for('.upload_letter', service_id=current_service.id), "href": url_for('.upload_letter', service_id=current_service.id),
"classes": "govuk-button--secondary" "classes": "govuk-button--secondary govuk-!-margin-right-3"
}) }} }) }}
{% endif %} {% endif %}
{{ govukButton({ {{ govukButton({
"element": "a", "element": "a",
"text": "Upload an emergency contact list", "text": "Upload an emergency contact list",
"href": url_for('.upload_contact_list', service_id=current_service.id), "href": url_for('.upload_contact_list', service_id=current_service.id),
"classes": "govuk-button--secondary govuk-!-margin-left-3" "classes": "govuk-button--secondary"
}) }} }) }}
</div> </div>
{% endif %} {% endif %}

View File

@@ -18,131 +18,19 @@ from tests.conftest import (
) )
@pytest.mark.parametrize('user, expected_rows', [ def test_old_jobs_hub_redirects(
(create_active_user_with_permissions(), (
(
'File Status'
),
(
'export 1/1/2016.xls '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'all email addresses.xlsx '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'applicants.ods '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'thisisatest.csv '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
)),
(create_active_caseworking_user(), (
(
'File Messages to be sent'
),
(
'even_later.csv '
'Sending 1 January 2016 at 11:09pm 1'
),
(
'send_me_later.csv '
'Sending 1 January 2016 at 11:09am 1'
),
(
'File Status'
),
(
'export 1/1/2016.xls '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'all email addresses.xlsx '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'applicants.ods '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'thisisatest.csv '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
)),
])
@freeze_time("2012-12-12 12:12")
def test_jobs_page_shows_scheduled_jobs_if_user_doesnt_have_dashboard(
client_request, client_request,
service_one,
active_user_with_permissions,
mock_get_jobs,
user,
expected_rows,
): ):
client_request.login(user) client_request.get(
page = client_request.get('main.view_jobs', service_id=service_one['id']) 'main.view_jobs',
service_id=SERVICE_ONE_ID,
for index, row in enumerate(expected_rows): _expected_status=302,
assert normalize_spaces(page.select('tr')[index].text) == row _expected_redirect=url_for(
'main.uploads',
service_id=SERVICE_ONE_ID,
@pytest.mark.parametrize('user', [ _external=True,
create_active_user_with_permissions(), )
create_active_caseworking_user(), )
])
def test_get_jobs_shows_page_links(
client_request,
active_user_with_permissions,
mock_get_jobs,
user,
):
client_request.login(user)
page = client_request.get('main.view_jobs', service_id=SERVICE_ONE_ID)
assert 'Next page' in page.find('li', {'class': 'next-page'}).text
assert 'Previous page' in page.find('li', {'class': 'previous-page'}).text
@pytest.mark.parametrize('user', [
create_active_user_with_permissions(),
create_active_caseworking_user(),
])
@freeze_time("2012-12-12 12:12")
def test_jobs_page_doesnt_show_scheduled_on_page_2(
client_request,
service_one,
active_user_with_permissions,
mock_get_jobs,
user,
):
client_request.login(user)
page = client_request.get('main.view_jobs', service_id=service_one['id'], page=2)
for index, row in enumerate((
(
'File Status'
),
(
'export 1/1/2016.xls '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'all email addresses.xlsx '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'applicants.ods '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
(
'thisisatest.csv '
'Sent today at 12:12pm 1 sending 0 delivered 0 failed'
),
)):
assert normalize_spaces(page.select('tr')[index].text) == row
@pytest.mark.parametrize('user', [ @pytest.mark.parametrize('user', [

View File

@@ -65,11 +65,11 @@ def test_all_users_have_upload_contact_list(
@pytest.mark.parametrize('extra_permissions, expected_empty_message', ( @pytest.mark.parametrize('extra_permissions, expected_empty_message', (
(['letter'], ( ([], (
'You have not uploaded any files recently. ' 'You have not uploaded any files recently. '
'To upload a list of contact details, first choose a template.' 'To upload a list of contact details, first choose a template.'
)), )),
(['letter', 'upload_letters'], ( (['letter'], (
'You have not uploaded any files recently. ' 'You have not uploaded any files recently. '
'Upload a letter and Notify will print, pack and post it for you. ' 'Upload a letter and Notify will print, pack and post it for you. '
'To upload a list of contact details, first choose a template.' 'To upload a list of contact details, first choose a template.'