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')
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'
)

View File

@@ -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):
# Cant import at top-level because app isnt 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'}

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>
{% 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>
{% 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>
{% endif %}
{% endif %}

View File

@@ -16,30 +16,30 @@
<h1 class="heading-large">Before you request to go live</h1>
{% call task_list_wrapper() %}
{{ 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>
'.format(
url_for('main.manage_users', service_id=current_service.id)
)|safe,
) }}
{{ task_list_item(
has_templates,
current_service.has_templates,
'<a href="{}">Add templates with examples of the content you plan to send
</a>'.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,
'<a href="{}">Add an email reply-to address</a>'.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,
'<a href="{}">Change your text message sender name</a>'.format(
url_for('main.service_sms_senders', service_id=current_service.id)
)|safe