diff --git a/app/main/views/dashboard.py b/app/main/views/dashboard.py index c243f02ba..88b7f46af 100644 --- a/app/main/views/dashboard.py +++ b/app/main/views/dashboard.py @@ -1,6 +1,4 @@ from datetime import datetime, timedelta -from collections import namedtuple -from itertools import groupby import dateutil from flask import ( @@ -20,7 +18,7 @@ from app import ( service_api_client, template_statistics_client ) -from app.statistics_utils import add_rates_to, get_formatted_percentage, add_rate_to_jobs +from app.statistics_utils import get_formatted_percentage, add_rate_to_job from app.utils import user_has_permissions @@ -117,20 +115,26 @@ def aggregate_usage(template_statistics): def get_dashboard_partials(service_id): + # all but scheduled and cancelled + statuses_to_display = [ + 'pending', + 'in progress', + 'finished', + 'sending limits exceeded', + ] template_statistics = aggregate_usage( template_statistics_client.get_template_statistics_for_service(service_id, limit_days=7) ) - jobs = add_rate_to_jobs([ - job for job in job_api_client.get_jobs(service_id, limit_days=7)['data'] - if job['original_file_name'] != current_app.config['TEST_MESSAGE_FILENAME'] - ]) - scheduled_jobs = sorted([ - job for job in jobs if job['job_status'] == 'scheduled' - ], key=lambda job: job['scheduled_for']) + scheduled_jobs = sorted( + job_api_client.get_jobs(service_id, statuses=['scheduled'])['data'], + key=lambda job: job['scheduled_for'] + ) immediate_jobs = [ - job for job in jobs if job['job_status'] not in ['scheduled', 'cancelled'] + add_rate_to_job(job) + for job in job_api_client.get_jobs(service_id, statuses=statuses_to_display)['data'] + if job['original_file_name'] != current_app.config['TEST_MESSAGE_FILENAME'] ] service = service_api_client.get_detailed_service(service_id) diff --git a/app/main/views/jobs.py b/app/main/views/jobs.py index 2c4d3b798..e50996c66 100644 --- a/app/main/views/jobs.py +++ b/app/main/views/jobs.py @@ -32,7 +32,6 @@ from app.utils import ( generate_previous_next_dict, user_has_permissions, generate_notifications_csv) -from app.statistics_utils import add_rate_to_jobs from app.utils import get_help_argument @@ -67,10 +66,10 @@ def _set_status_filters(filter_args): def view_jobs(service_id): return render_template( 'views/jobs/jobs.html', - jobs=add_rate_to_jobs([ - job for job in job_api_client.get_jobs(service_id)['data'] + jobs=[ + add_rate_to_job(job) for job in job_api_client.get_jobs(service_id)['data'] if job['job_status'] not in ['scheduled', 'cancelled'] - ]) + ] ) diff --git a/tests/conftest.py b/tests/conftest.py index 5ab5ee18a..1f9f82579 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -901,7 +901,7 @@ def mock_get_job_in_progress(mocker, api_user_active): @pytest.fixture(scope='function') def mock_get_jobs(mocker, api_user_active): - def _get_jobs(service_id, limit_days=None): + def _get_jobs(service_id, limit_days=None, statuses=None): return {"data": [ job_json( service_id,