diff --git a/app/main/views/index.py b/app/main/views/index.py index 1247c0aa2..2d7423661 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -12,7 +12,7 @@ from notifications_utils.international_billing_rates import ( ) from notifications_utils.template import HTMLEmailTemplate, LetterImageTemplate -from app import email_branding_client, letter_branding_client +from app import email_branding_client, letter_branding_client, status_api_client from app.main import main from app.main.forms import FieldWithNoneOption, SearchByNameForm from app.main.views.sub_navigation_dictionaries import features_nav @@ -21,9 +21,14 @@ from app.utils import AgreementInfo, get_logo_cdn_domain @main.route('/') def index(): + if current_user and current_user.is_authenticated: return redirect(url_for('main.choose_account')) - return render_template('views/signedout.html') + + return render_template( + 'views/signedout.html', + counts=status_api_client.get_count_of_live_services_and_organisations(), + ) @main.route('/robots.txt') diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index ba20ccbb1..f7989fe14 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -262,12 +262,7 @@ def service_switch_live(service_id): ) if form.validate_on_submit(): - current_service.update( - # TODO This limit should be set depending on the agreement signed by - # with Notify. - message_limit=250000 if form.enabled.data else 50, - restricted=(not form.enabled.data) - ) + current_service.update_status(live=form.enabled.data) return redirect(url_for('.service_settings', service_id=service_id)) return render_template( diff --git a/app/models/service.py b/app/models/service.py index 64805f430..30ee5fc0c 100644 --- a/app/models/service.py +++ b/app/models/service.py @@ -72,6 +72,9 @@ class Service(): def update(self, **kwargs): return service_api_client.update_service(self.id, **kwargs) + def update_status(self, live): + return service_api_client.update_status(self.id, live=live) + def switch_permission(self, permission): return self.force_permission( permission, diff --git a/app/notify_client/organisations_api_client.py b/app/notify_client/organisations_api_client.py index d1d082e82..fab82246e 100644 --- a/app/notify_client/organisations_api_client.py +++ b/app/notify_client/organisations_api_client.py @@ -25,6 +25,7 @@ class OrganisationsClient(NotifyAdminAPIClient): return self.get(url="/service/{}/organisation".format(service_id)) @cache.delete('service-{service_id}') + @cache.delete('live-service-and-organisation-counts') def update_service_organisation(self, service_id, org_id): data = { 'service_id': service_id diff --git a/app/notify_client/service_api_client.py b/app/notify_client/service_api_client.py index b2242ae1a..b79651dbd 100644 --- a/app/notify_client/service_api_client.py +++ b/app/notify_client/service_api_client.py @@ -98,6 +98,14 @@ class ServiceAPIClient(NotifyAdminAPIClient): endpoint = "/service/{0}".format(service_id) return self.post(endpoint, data) + @cache.delete('live-service-and-organisation-counts') + def update_status(self, service_id, live): + return self.update_service( + service_id, + message_limit=250000 if live else 50, + restricted=(not live), + ) + # This method is not cached because it calls through to one which is def update_service_with_properties(self, service_id, properties): return self.update_service(service_id, **properties) diff --git a/app/notify_client/status_api_client.py b/app/notify_client/status_api_client.py index 3925a77bd..7228621c6 100644 --- a/app/notify_client/status_api_client.py +++ b/app/notify_client/status_api_client.py @@ -1,5 +1,4 @@ - -from app.notify_client import NotifyAdminAPIClient +from app.notify_client import NotifyAdminAPIClient, cache class StatusApiClient(NotifyAdminAPIClient): @@ -7,5 +6,9 @@ class StatusApiClient(NotifyAdminAPIClient): def get_status(self, *params): return self.get(url='/_status', *params) + @cache.set('live-service-and-organisation-counts') + def get_count_of_live_services_and_organisations(self): + return self.get(url='/_status/live-service-and-organisation-counts') + status_api_client = StatusApiClient() diff --git a/app/templates/views/signedout.html b/app/templates/views/signedout.html index ae7ab262c..14b5d545e 100644 --- a/app/templates/views/signedout.html +++ b/app/templates/views/signedout.html @@ -115,17 +115,17 @@