Refactor go-live readyness into service model

All this info is info about the service. So it’s better to put it on
the service model because:
- encapsulation
- later reuse
This commit is contained in:
Chris Hill-Scott
2018-09-20 09:43:28 +01:00
parent d753e8351c
commit 45b1b11abb
4 changed files with 57 additions and 31 deletions

View File

@@ -180,30 +180,7 @@ def service_name_change_confirm(service_id):
@user_has_permissions('manage_service') @user_has_permissions('manage_service')
def request_to_go_live(service_id): def request_to_go_live(service_id):
return render_template( return render_template(
'views/service-settings/request-to-go-live.html', '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'},
) )

View File

@@ -3,6 +3,8 @@ from itertools import chain
from flask import request, session from flask import request, session
from flask_login import AnonymousUserMixin, UserMixin from flask_login import AnonymousUserMixin, UserMixin
from app.utils import get_default_sms_sender
roles = { roles = {
'send_messages': ['send_texts', 'send_emails', 'send_letters'], 'send_messages': ['send_texts', 'send_emails', 'send_letters'],
'manage_templates': ['manage_templates'], 'manage_templates': ['manage_templates'],
@@ -302,7 +304,54 @@ class Service(dict):
def has_permission(self, permission): def has_permission(self, permission):
return permission in self.permissions return permission in self.permissions
@property
def has_jobs(self): def has_jobs(self):
# Cant import at top-level because app isnt yet initialised # Cant import at top-level because app isnt yet initialised
from app import job_api_client from app import job_api_client
return job_api_client.has_jobs(self.id) 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'}

View File

@@ -9,7 +9,7 @@
<li><a href="{{ url_for('.choose_template', service_id=current_service.id) }}" {{ main_navigation.is_selected('templates') }}>Templates</a></li> <li><a href="{{ url_for('.choose_template', service_id=current_service.id) }}" {{ main_navigation.is_selected('templates') }}>Templates</a></li>
{% if not current_user.has_permissions('view_activity') %} {% if not current_user.has_permissions('view_activity') %}
<li><a href="{{ url_for('.view_notifications', service_id=current_service.id, status='sending,delivered,failed') }}" {{ casework_navigation.is_selected('sent-messages') }}>Sent messages</a></li> <li><a href="{{ url_for('.view_notifications', service_id=current_service.id, status='sending,delivered,failed') }}" {{ casework_navigation.is_selected('sent-messages') }}>Sent messages</a></li>
{% if current_service.has_jobs() %} {% if current_service.has_jobs %}
<li><a href="{{ url_for('.view_jobs', service_id=current_service.id) }}" {{ casework_navigation.is_selected('uploaded-files') }}>Uploaded files</a></li> <li><a href="{{ url_for('.view_jobs', service_id=current_service.id) }}" {{ casework_navigation.is_selected('uploaded-files') }}>Uploaded files</a></li>
{% endif %} {% endif %}
{% endif %} {% endif %}

View File

@@ -16,30 +16,30 @@
<h1 class="heading-large">Before you request to go live</h1> <h1 class="heading-large">Before you request to go live</h1>
{% call task_list_wrapper() %} {% call task_list_wrapper() %}
{{ task_list_item( {{ task_list_item(
has_team_members, current_service.has_team_members,
'<a href="{}">Add a team member who can manage settings, team and usage</a> '<a href="{}">Add a team member who can manage settings, team and usage</a>
'.format( '.format(
url_for('main.manage_users', service_id=current_service.id) url_for('main.manage_users', service_id=current_service.id)
)|safe, )|safe,
) }} ) }}
{{ task_list_item( {{ task_list_item(
has_templates, current_service.has_templates,
'<a href="{}">Add templates with examples of the content you plan to send '<a href="{}">Add templates with examples of the content you plan to send
</a>'.format( </a>'.format(
url_for('main.choose_template', service_id=current_service.id) url_for('main.choose_template', service_id=current_service.id)
)|safe, )|safe,
) }} ) }}
{% if has_email_templates %} {% if current_service.has_email_templates %}
{{ task_list_item( {{ task_list_item(
has_email_reply_to_address, current_service.has_email_reply_to_address,
'<a href="{}">Add an email reply-to address</a>'.format( '<a href="{}">Add an email reply-to address</a>'.format(
url_for('main.service_email_reply_to', service_id=current_service.id) url_for('main.service_email_reply_to', service_id=current_service.id)
)|safe, )|safe,
) }} ) }}
{% endif %} {% 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( {{ task_list_item(
not sms_sender_is_govuk, not current_service.sms_sender_is_govuk,
'<a href="{}">Change your text message sender name</a>'.format( '<a href="{}">Change your text message sender name</a>'.format(
url_for('main.service_sms_senders', service_id=current_service.id) url_for('main.service_sms_senders', service_id=current_service.id)
)|safe )|safe