mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-09 10:09:49 -04:00
updated dashboard.py def
This commit is contained in:
@@ -11,12 +11,13 @@ from werkzeug.utils import redirect
|
|||||||
from app import (
|
from app import (
|
||||||
billing_api_client,
|
billing_api_client,
|
||||||
current_service,
|
current_service,
|
||||||
|
job_api_client,
|
||||||
|
notification_api_client,
|
||||||
service_api_client,
|
service_api_client,
|
||||||
template_statistics_client,
|
template_statistics_client,
|
||||||
)
|
)
|
||||||
from app.formatters import format_date_numeric, format_datetime_numeric, get_time_left
|
from app.formatters import format_date_numeric, format_datetime_numeric, get_time_left
|
||||||
from app.main import main
|
from app.main import main
|
||||||
from app.main.views.jobs import get_notifications
|
|
||||||
from app.statistics_utils import get_formatted_percentage
|
from app.statistics_utils import get_formatted_percentage
|
||||||
from app.utils import (
|
from app.utils import (
|
||||||
DELIVERED_STATUSES,
|
DELIVERED_STATUSES,
|
||||||
@@ -29,7 +30,6 @@ from app.utils.pagination import generate_next_dict, generate_previous_dict
|
|||||||
from app.utils.time import get_current_financial_year
|
from app.utils.time import get_current_financial_year
|
||||||
from app.utils.user import user_has_permissions
|
from app.utils.user import user_has_permissions
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services/<uuid:service_id>/dashboard")
|
@main.route("/services/<uuid:service_id>/dashboard")
|
||||||
@user_has_permissions("view_activity", "send_messages")
|
@user_has_permissions("view_activity", "send_messages")
|
||||||
def old_service_dashboard(service_id):
|
def old_service_dashboard(service_id):
|
||||||
@@ -39,7 +39,6 @@ def old_service_dashboard(service_id):
|
|||||||
@main.route("/services/<uuid:service_id>")
|
@main.route("/services/<uuid:service_id>")
|
||||||
@user_has_permissions()
|
@user_has_permissions()
|
||||||
def service_dashboard(service_id):
|
def service_dashboard(service_id):
|
||||||
download_availability = []
|
|
||||||
if session.get("invited_user_id"):
|
if session.get("invited_user_id"):
|
||||||
session.pop("invited_user_id", None)
|
session.pop("invited_user_id", None)
|
||||||
session["service_id"] = service_id
|
session["service_id"] = service_id
|
||||||
@@ -47,26 +46,38 @@ def service_dashboard(service_id):
|
|||||||
if not current_user.has_permissions("view_activity"):
|
if not current_user.has_permissions("view_activity"):
|
||||||
return redirect(url_for("main.choose_template", service_id=service_id))
|
return redirect(url_for("main.choose_template", service_id=service_id))
|
||||||
|
|
||||||
notifications = get_notifications(service_id, message_type=None)['notifications_data']
|
download_availability = []
|
||||||
|
|
||||||
|
notifications = notification_api_client.get_notifications_for_service(
|
||||||
|
service_id=service_id,
|
||||||
|
)['notifications']
|
||||||
|
|
||||||
|
notificaton_job_ids = [notification['job']['id'] for notification in notifications if 'job' in notification]
|
||||||
|
|
||||||
|
jobs = []
|
||||||
|
|
||||||
|
for notificaton_job_id in notificaton_job_ids:
|
||||||
|
job_data = job_api_client.get_job(service_id, notificaton_job_id)["data"]
|
||||||
|
jobs.append(job_data)
|
||||||
|
|
||||||
|
service_data_retention_days = None
|
||||||
|
|
||||||
|
download_availability = []
|
||||||
|
for job in jobs:
|
||||||
|
message_type = job.get('template_type')
|
||||||
|
if message_type is not None:
|
||||||
|
service_data_retention_days = current_service.get_days_of_retention(message_type)
|
||||||
|
time_left = get_time_left(job['created_at'], service_data_retention_days=service_data_retention_days)
|
||||||
|
download_availability.append({"job_id": job['id'], "time_left": time_left})
|
||||||
|
|
||||||
for notification in notifications:
|
|
||||||
message_type = notification.get('template_type')
|
|
||||||
job_id = notification.get('job', {}).get('id')
|
|
||||||
original_file_name = notification.get('job', {}).get('original_file_name')
|
|
||||||
service_data_retention_days = current_service.get_days_of_retention(
|
|
||||||
message_type
|
|
||||||
)
|
|
||||||
created_at = notification.get('created_at')
|
|
||||||
if job_id and original_file_name:
|
|
||||||
time_left_value = get_time_left(created_at, service_data_retention_days=service_data_retention_days)
|
|
||||||
download_availability.append({'job_id': job_id, 'time_left': time_left_value})
|
|
||||||
return render_template(
|
return render_template(
|
||||||
"views/dashboard/dashboard.html",
|
"views/dashboard/dashboard.html",
|
||||||
updates_url=url_for(".service_dashboard_updates", service_id=service_id),
|
updates_url=url_for(".service_dashboard_updates", service_id=service_id),
|
||||||
partials=get_dashboard_partials(service_id),
|
partials=get_dashboard_partials(service_id),
|
||||||
notifications=notifications,
|
notifications=notifications,
|
||||||
download_availability=download_availability,
|
download_availability=download_availability,
|
||||||
)
|
service_data_retention_days=service_data_retention_days
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@main.route("/services/<uuid:service_id>/dashboard.json")
|
@main.route("/services/<uuid:service_id>/dashboard.json")
|
||||||
|
|||||||
@@ -235,7 +235,6 @@ def get_notifications(service_id, message_type, status_override=None): # noqa
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
"service_data_retention_days": service_data_retention_days,
|
"service_data_retention_days": service_data_retention_days,
|
||||||
'notifications_data': notifications['notifications'],
|
|
||||||
"counts": render_template(
|
"counts": render_template(
|
||||||
"views/activity/counts.html",
|
"views/activity/counts.html",
|
||||||
status=request.args.get("status"),
|
status=request.args.get("status"),
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
caption="Batched Jobs",
|
caption="Batched Jobs",
|
||||||
caption_visible=False,
|
caption_visible=False,
|
||||||
border_visible=True,
|
border_visible=True,
|
||||||
empty_message='No batched job messages found  (messages are kept for {} days)'.format(limit_days)|safe,
|
empty_message='No batched job messages found  (messages are kept for {} days)'.format(service_data_retention_days)|safe,
|
||||||
field_headings=['Template Name','Date/Time', 'Download (CSV) Report'],
|
field_headings=['Template Name','Date/Time', 'Download (CSV) Report'],
|
||||||
field_headings_visible=False
|
field_headings_visible=False
|
||||||
) %}
|
) %}
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endcall %}
|
{% endcall %}
|
||||||
{% if batched %}
|
{% if notifications %}
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
|||||||
@@ -1536,14 +1536,18 @@ def test_service_dashboard_shows_usage(
|
|||||||
service_one["permissions"] = permissions
|
service_one["permissions"] = permissions
|
||||||
page = client_request.get("main.service_dashboard", service_id=SERVICE_ONE_ID)
|
page = client_request.get("main.service_dashboard", service_id=SERVICE_ONE_ID)
|
||||||
|
|
||||||
table_rows = page.find_all("tbody")[0].find_all("tr")
|
usage_table = page.find("table", class_="usage-table")
|
||||||
|
|
||||||
|
# Check if the "Usage" table exists
|
||||||
|
assert usage_table is not None
|
||||||
|
|
||||||
|
table_rows = usage_table.find_all("tbody")[0].find_all("tr")
|
||||||
|
|
||||||
assert len(table_rows) == 1
|
assert len(table_rows) == 1
|
||||||
|
|
||||||
assert "500" in table_rows[0].find_all("td")[0].text
|
assert "500" in table_rows[0].find_all("td")[0].text
|
||||||
assert "9500" in table_rows[0].find_all("td")[1].text
|
assert "9500" in table_rows[0].find_all("td")[1].text
|
||||||
|
|
||||||
|
|
||||||
def test_service_dashboard_shows_free_allowance(
|
def test_service_dashboard_shows_free_allowance(
|
||||||
mocker,
|
mocker,
|
||||||
client_request,
|
client_request,
|
||||||
|
|||||||
Reference in New Issue
Block a user