From 45b1b11abb1aa2dfd9fd76133ea1522f2dc02a0e Mon Sep 17 00:00:00 2001 From: Chris Hill-Scott Date: Thu, 20 Sep 2018 09:43:28 +0100 Subject: [PATCH] Refactor go-live readyness into service model MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All this info is info about the service. So it’s better to put it on the service model because: - encapsulation - later reuse --- app/main/views/service_settings.py | 25 +--------- app/notify_client/models.py | 49 +++++++++++++++++++ app/templates/main_nav.html | 2 +- .../service-settings/request-to-go-live.html | 12 ++--- 4 files changed, 57 insertions(+), 31 deletions(-) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index d25160b6d..98ff57e0b 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -180,30 +180,7 @@ def service_name_change_confirm(service_id): @user_has_permissions('manage_service') def request_to_go_live(service_id): return render_template( - 'views/service-settings/request-to-go-live.html', - has_team_members=( - user_api_client.get_count_of_users_with_permission( - service_id, 'manage_service' - ) > 1 - ), - has_templates=( - service_api_client.count_service_templates(service_id) > 0 - ), - has_email_templates=( - service_api_client.count_service_templates(service_id, template_type='email') > 0 - ), - has_sms_templates=( - service_api_client.count_service_templates(service_id, template_type='sms') > 0 - ), - has_email_reply_to_address=bool( - service_api_client.get_reply_to_email_addresses(service_id) - ), - shouldnt_use_govuk_as_sms_sender=( - current_service.organisation_type in {'local', 'nhs'} - ), - sms_sender_is_govuk=get_default_sms_sender( - service_api_client.get_sms_senders(service_id) - ) in {'GOVUK', 'None'}, + 'views/service-settings/request-to-go-live.html' ) diff --git a/app/notify_client/models.py b/app/notify_client/models.py index 03a97851c..6e429f0fa 100644 --- a/app/notify_client/models.py +++ b/app/notify_client/models.py @@ -3,6 +3,8 @@ from itertools import chain from flask import request, session from flask_login import AnonymousUserMixin, UserMixin +from app.utils import get_default_sms_sender + roles = { 'send_messages': ['send_texts', 'send_emails', 'send_letters'], 'manage_templates': ['manage_templates'], @@ -302,7 +304,54 @@ class Service(dict): def has_permission(self, permission): return permission in self.permissions + @property def has_jobs(self): # Can’t import at top-level because app isn’t yet initialised from app import job_api_client return job_api_client.has_jobs(self.id) + + @property + def has_team_members(self): + from app import user_api_client + return user_api_client.get_count_of_users_with_permission( + self.id, 'manage_service' + ) > 1 + + @property + def has_templates(self): + from app import service_api_client + return service_api_client.count_service_templates( + self.id + ) > 0 + + @property + def has_email_templates(self): + from app import service_api_client + return service_api_client.count_service_templates( + self.id, template_type='email' + ) > 0 + + @property + def has_sms_templates(self): + from app import service_api_client + return service_api_client.count_service_templates( + self.id, template_type='sms' + ) > 0 + + @property + def has_email_reply_to_address(self): + from app import service_api_client + return bool(service_api_client.get_reply_to_email_addresses( + self.id + )) + + @property + def shouldnt_use_govuk_as_sms_sender(self): + return self.organisation_type in {'local', 'nhs'} + + @property + def sms_sender_is_govuk(self): + from app import service_api_client + return get_default_sms_sender( + service_api_client.get_sms_senders(self.id) + ) in {'GOVUK', 'None'} diff --git a/app/templates/main_nav.html b/app/templates/main_nav.html index 2259a982d..543828537 100644 --- a/app/templates/main_nav.html +++ b/app/templates/main_nav.html @@ -9,7 +9,7 @@
  • Templates
  • {% if not current_user.has_permissions('view_activity') %}
  • Sent messages
  • - {% if current_service.has_jobs() %} + {% if current_service.has_jobs %}
  • Uploaded files
  • {% endif %} {% endif %} diff --git a/app/templates/views/service-settings/request-to-go-live.html b/app/templates/views/service-settings/request-to-go-live.html index 28cf3c503..0b92f1d48 100644 --- a/app/templates/views/service-settings/request-to-go-live.html +++ b/app/templates/views/service-settings/request-to-go-live.html @@ -16,30 +16,30 @@

    Before you request to go live

    {% call task_list_wrapper() %} {{ task_list_item( - has_team_members, + current_service.has_team_members, 'Add a team member who can manage settings, team and usage '.format( url_for('main.manage_users', service_id=current_service.id) )|safe, ) }} {{ task_list_item( - has_templates, + current_service.has_templates, 'Add templates with examples of the content you plan to send '.format( url_for('main.choose_template', service_id=current_service.id) )|safe, ) }} - {% if has_email_templates %} + {% if current_service.has_email_templates %} {{ task_list_item( - has_email_reply_to_address, + current_service.has_email_reply_to_address, 'Add an email reply-to address'.format( url_for('main.service_email_reply_to', service_id=current_service.id) )|safe, ) }} {% endif %} - {% if has_sms_templates and shouldnt_use_govuk_as_sms_sender %} + {% if current_service.has_sms_templates and current_service.shouldnt_use_govuk_as_sms_sender %} {{ task_list_item( - not sms_sender_is_govuk, + not current_service.sms_sender_is_govuk, 'Change your text message sender name'.format( url_for('main.service_sms_senders', service_id=current_service.id) )|safe