diff --git a/app/__init__.py b/app/__init__.py
index 527495702..43c93f90f 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -345,6 +345,10 @@ def format_delta(date):
)
+def format_thousands(number):
+ return "{:,.0f}".format(number)
+
+
def valid_phone_number(phone_number):
try:
validate_phone_number(phone_number)
@@ -688,6 +692,7 @@ def add_template_filters(application):
formatted_list,
nl2br,
format_phone_number_human_readable,
+ format_thousands,
id_safe,
]:
application.add_template_filter(fn)
diff --git a/app/main/views/choose_account.py b/app/main/views/choose_account.py
index febecaeea..3626a66e6 100644
--- a/app/main/views/choose_account.py
+++ b/app/main/views/choose_account.py
@@ -1,7 +1,9 @@
from flask import redirect, render_template, session, url_for
from flask_login import current_user
+from app import status_api_client
from app.main import main
+from app.models.organisation import Organisations
from app.utils import PermanentRedirect, user_is_logged_in
@@ -18,9 +20,17 @@ def services_or_dashboard():
@main.route("/accounts")
@user_is_logged_in
def choose_account():
+ org_count, live_service_count = None, None
+ if current_user.platform_admin:
+ org_count, live_service_count = (
+ len(Organisations()),
+ status_api_client.get_count_of_live_services_and_organisations()['services'],
+ )
return render_template(
'views/choose-account.html',
can_add_service=current_user.is_gov_user,
+ org_count=org_count,
+ live_service_count=live_service_count,
)
diff --git a/app/templates/views/choose-account.html b/app/templates/views/choose-account.html
index 9457f520e..62924ed19 100644
--- a/app/templates/views/choose-account.html
+++ b/app/templates/views/choose-account.html
@@ -69,6 +69,9 @@
diff --git a/app/templates/views/signedout.html b/app/templates/views/signedout.html
index 14b5d545e..a3de3624d 100644
--- a/app/templates/views/signedout.html
+++ b/app/templates/views/signedout.html
@@ -120,12 +120,12 @@
Services
-
{{ counts.services }}
+
{{ counts.services|format_thousands }}
services
Organisations
-
{{ counts.organisations }}
+
{{ counts.organisations|format_thousands }}
organisations
diff --git a/tests/app/main/views/accounts/test_choose_accounts.py b/tests/app/main/views/accounts/test_choose_accounts.py
index 4ecd2d559..bc3c3b69b 100644
--- a/tests/app/main/views/accounts/test_choose_accounts.py
+++ b/tests/app/main/views/accounts/test_choose_accounts.py
@@ -157,16 +157,21 @@ def test_choose_account_should_show_choose_accounts_page_if_no_services(
def test_choose_account_should_should_organisations_link_for_platform_admin(
client_request,
platform_admin_user,
+ mock_get_organisations,
mock_get_orgs_and_services,
mock_get_organisation_services,
+ mock_get_service_and_organisation_counts,
):
client_request.login(platform_admin_user)
page = client_request.get('main.choose_account')
- first_link = page.select_one('.browse-list-item a')
+ first_item = page.select_one('.browse-list-item')
+ first_link = first_item.select_one('a')
+ first_hint = first_item.select_one('.browse-list-hint')
assert first_link.text == 'All organisations'
assert first_link['href'] == url_for('main.organisations')
+ assert normalize_spaces(first_hint.text) == '3 organisations, 9,999 live services'
def test_choose_account_should_show_back_to_service_link(
diff --git a/tests/app/main/views/test_index.py b/tests/app/main/views/test_index.py
index e668f7068..b49204057 100644
--- a/tests/app/main/views/test_index.py
+++ b/tests/app/main/views/test_index.py
@@ -34,7 +34,7 @@ def test_non_logged_in_user_can_see_homepage(
assert normalize_spaces(page.select_one('#whos-using-notify').text) == (
'Who’s using GOV.UK Notify '
'Services '
- '9999 services '
+ '9,999 services '
'Organisations '
'111 organisations '
'See the list of services and organisations.'
diff --git a/tests/app/main/views/test_service_settings.py b/tests/app/main/views/test_service_settings.py
index 917e4d447..87d56542a 100644
--- a/tests/app/main/views/test_service_settings.py
+++ b/tests/app/main/views/test_service_settings.py
@@ -3647,6 +3647,8 @@ def test_service_switch_can_upload_document_lets_contact_details_be_added_and_sh
def test_archive_service_after_confirm(
client_request,
mocker,
+ mock_get_organisations,
+ mock_get_service_and_organisation_counts,
mock_get_organisations_and_services_for_user,
user,
fake_uuid,
diff --git a/tests/conftest.py b/tests/conftest.py
index 39d56b010..15a92a572 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -3121,7 +3121,15 @@ def mock_get_organisations(mocker):
organisation_json('7aa5d4e9-4385-4488-a489-07812ba13385', 'Org 3'),
]
- return mocker.patch('app.organisations_client.get_organisations', side_effect=_get_organisations)
+ mocker.patch(
+ 'app.models.organisation.Organisations.client',
+ side_effect=_get_organisations,
+ )
+
+ return mocker.patch(
+ 'app.notify_client.organisations_api_client.organisations_client.get_organisations',
+ side_effect=_get_organisations,
+ )
@pytest.fixture(scope='function')