Refactor settings page to use service model

There’s a lot of code in service settings which:
- talks to the API directly through the clients
- passes that information through to the Jinja template

By encapsulating this logic in the service model:
- the Jinja template can access the data directly
- the logic can be reused across multiple methods
This commit is contained in:
Chris Hill-Scott
2018-10-26 17:31:49 +01:00
parent 526f2d7900
commit 1e2608d2e0
12 changed files with 199 additions and 159 deletions

View File

@@ -359,9 +359,9 @@ def send_test_step(service_id, template_id, step_index):
email_reply_to = None
sms_sender = None
if db_template['template_type'] == 'email':
email_reply_to = get_email_reply_to_address_from_session(service_id)
email_reply_to = get_email_reply_to_address_from_session()
elif db_template['template_type'] == 'sms':
sms_sender = get_sms_sender_from_session(service_id)
sms_sender = get_sms_sender_from_session()
template = get_template(
db_template,
current_service,
@@ -530,9 +530,9 @@ def _check_messages(service_id, template_id, upload_id, preview_row, letters_as_
email_reply_to = None
sms_sender = None
if db_template['template_type'] == 'email':
email_reply_to = get_email_reply_to_address_from_session(service_id)
email_reply_to = get_email_reply_to_address_from_session()
elif db_template['template_type'] == 'sms':
sms_sender = get_sms_sender_from_session(service_id)
sms_sender = get_sms_sender_from_session()
template = get_template(
db_template,
current_service,
@@ -815,9 +815,9 @@ def _check_notification(service_id, template_id, exception=None):
email_reply_to = None
sms_sender = None
if db_template['template_type'] == 'email':
email_reply_to = get_email_reply_to_address_from_session(service_id)
email_reply_to = get_email_reply_to_address_from_session()
elif db_template['template_type'] == 'sms':
sms_sender = get_sms_sender_from_session(service_id)
sms_sender = get_sms_sender_from_session()
template = get_template(
db_template,
current_service,
@@ -903,17 +903,17 @@ def send_notification(service_id, template_id):
))
def get_email_reply_to_address_from_session(service_id):
def get_email_reply_to_address_from_session():
if session.get('sender_id'):
return service_api_client.get_reply_to_email_address(
service_id, session['sender_id']
return current_service.get_email_reply_to_address(
session['sender_id']
)['email_address']
def get_sms_sender_from_session(service_id):
def get_sms_sender_from_session():
if session.get('sender_id'):
return service_api_client.get_sms_sender(
service_id=service_id, sms_sender_id=session['sender_id']
return current_service.get_sms_sender(
session['sender_id']
)['sms_sender']

View File

@@ -13,7 +13,6 @@ from flask import (
)
from flask_login import current_user, login_required
from notifications_python_client.errors import HTTPError
from notifications_utils.field import Field
from app import (
billing_api_client,
@@ -56,7 +55,6 @@ from app.utils import (
AgreementInfo,
email_safe,
get_cdn_domain,
get_default_sms_sender,
user_has_permissions,
user_is_platform_admin,
)
@@ -66,50 +64,7 @@ from app.utils import (
@login_required
@user_has_permissions('manage_service', 'manage_api_keys')
def service_settings(service_id):
letter_branding_organisations = email_branding_client.get_letter_email_branding()
organisation = organisations_client.get_service_organisation(service_id).get('name', None)
if current_service.email_branding:
email_branding = email_branding_client.get_email_branding(current_service.email_branding)['email_branding']
else:
email_branding = None
inbound_number = inbound_number_client.get_inbound_sms_number_for_service(service_id)
disp_inbound_number = inbound_number['data'].get('number', '')
reply_to_email_addresses = service_api_client.get_reply_to_email_addresses(service_id)
reply_to_email_address_count = len(reply_to_email_addresses)
default_reply_to_email_address = next(
(x['email_address'] for x in reply_to_email_addresses if x['is_default']), "Not set"
)
letter_contact_details = service_api_client.get_letter_contacts(service_id)
letter_contact_details_count = len(letter_contact_details)
default_letter_contact_block = next(
(Field(x['contact_block'], html='escape') for x in letter_contact_details if x['is_default']), "Not set"
)
sms_senders = service_api_client.get_sms_senders(service_id)
free_sms_fragment_limit = billing_api_client.get_free_sms_fragment_limit_for_year(service_id)
data_retention = service_api_client.get_service_data_retention(service_id)
return render_template(
'views/service-settings.html',
email_branding=email_branding,
letter_branding=letter_branding_organisations.get(
current_service.get('dvla_organisation', '001')
),
can_receive_inbound=(current_service.has_permission('inbound_sms')),
inbound_number=disp_inbound_number,
default_reply_to_email_address=default_reply_to_email_address,
reply_to_email_address_count=reply_to_email_address_count,
default_letter_contact_block=default_letter_contact_block,
letter_contact_details_count=letter_contact_details_count,
default_sms_sender=get_default_sms_sender(sms_senders),
sms_sender_count=len(sms_senders),
free_sms_fragment_limit=free_sms_fragment_limit,
prefix_sms=current_service.prefix_sms,
organisation=organisation,
data_retention=data_retention,
)
return render_template('views/service-settings.html')
@main.route("/services/<service_id>/service-settings/name", methods=['GET', 'POST'])
@@ -454,10 +409,7 @@ def service_set_reply_to_email(service_id):
@login_required
@user_has_permissions('manage_service', 'manage_api_keys')
def service_email_reply_to(service_id):
reply_to_email_addresses = service_api_client.get_reply_to_email_addresses(service_id)
return render_template(
'views/service-settings/email_reply_to.html',
reply_to_email_addresses=reply_to_email_addresses)
return render_template('views/service-settings/email_reply_to.html')
@main.route("/services/<service_id>/service-settings/email-reply-to/add", methods=['GET', 'POST'])
@@ -465,8 +417,7 @@ def service_email_reply_to(service_id):
@user_has_permissions('manage_service')
def service_add_email_reply_to(service_id):
form = ServiceReplyToEmailForm()
reply_to_email_address_count = len(service_api_client.get_reply_to_email_addresses(service_id))
first_email_address = reply_to_email_address_count == 0
first_email_address = current_service.count_email_reply_to_addresses == 0
if form.validate_on_submit():
service_api_client.add_reply_to_email_address(
current_service.id,
@@ -494,7 +445,7 @@ def service_add_email_reply_to(service_id):
@user_has_permissions('manage_service')
def service_edit_email_reply_to(service_id, reply_to_email_id):
form = ServiceReplyToEmailForm()
reply_to_email_address = service_api_client.get_reply_to_email_address(service_id, reply_to_email_id)
reply_to_email_address = current_service.get_email_reply_to_address(reply_to_email_id)
if request.method == 'GET':
form.email_address.data = reply_to_email_address['email_address']
form.is_default.data = reply_to_email_address['is_default']
@@ -530,7 +481,6 @@ def service_delete_email_reply_to(service_id, reply_to_email_id):
@user_has_permissions('manage_service')
def service_set_inbound_number(service_id):
available_inbound_numbers = inbound_number_client.get_available_inbound_sms_numbers()
service_has_inbound_number = inbound_number_client.get_inbound_sms_number_for_service(service_id)['data'] != {}
inbound_numbers_value_and_label = [
(number['id'], number['number']) for number in available_inbound_numbers['data']
]
@@ -551,7 +501,6 @@ def service_set_inbound_number(service_id):
'views/service-settings/set-inbound-number.html',
form=form,
no_available_numbers=no_available_numbers,
service_has_inbound_number=service_has_inbound_number
)
@@ -614,10 +563,8 @@ def service_set_international_sms(service_id):
@login_required
@user_has_permissions('manage_service')
def service_set_inbound_sms(service_id):
number = inbound_number_client.get_inbound_sms_number_for_service(service_id)['data'].get('number', '')
return render_template(
'views/service-settings/set-inbound-sms.html',
inbound_number=number,
)
@@ -680,8 +627,7 @@ def service_letter_contact_details(service_id):
@user_has_permissions('manage_service')
def service_add_letter_contact(service_id):
form = ServiceLetterContactBlockForm()
letter_contact_blocks_count = len(service_api_client.get_letter_contacts(service_id))
first_contact_block = letter_contact_blocks_count == 0
first_contact_block = current_service.count_letter_contact_details == 0
if form.validate_on_submit():
service_api_client.add_letter_contact(
current_service.id,
@@ -696,15 +642,18 @@ def service_add_letter_contact(service_id):
return render_template(
'views/service-settings/letter-contact/add.html',
form=form,
first_contact_block=first_contact_block)
first_contact_block=first_contact_block,
)
@main.route("/services/<service_id>/service-settings/letter-contact/<letter_contact_id>/edit", methods=['GET', 'POST'])
@login_required
@user_has_permissions('manage_service')
def service_edit_letter_contact(service_id, letter_contact_id):
letter_contact_block = service_api_client.get_letter_contact(service_id, letter_contact_id)
form = ServiceLetterContactBlockForm(letter_contact_block=letter_contact_block['contact_block'])
letter_contact_block = current_service.get_letter_contact_block(letter_contact_id)
form = ServiceLetterContactBlockForm(
letter_contact_block=letter_contact_block['contact_block']
)
if request.method == 'GET':
form.is_default.data = letter_contact_block['is_default']
if form.validate_on_submit():
@@ -725,24 +674,8 @@ def service_edit_letter_contact(service_id, letter_contact_id):
@login_required
@user_has_permissions('manage_service', 'manage_api_keys')
def service_sms_senders(service_id):
def attach_hint(sender):
hints = []
if sender['is_default']:
hints += ["default"]
if sender['inbound_number_id']:
hints += ["receives replies"]
if hints:
sender['hint'] = "(" + " and ".join(hints) + ")"
sms_senders = service_api_client.get_sms_senders(service_id)
for sender in sms_senders:
attach_hint(sender)
return render_template(
'views/service-settings/sms-senders.html',
sms_senders=sms_senders
)
@@ -751,8 +684,7 @@ def service_sms_senders(service_id):
@user_has_permissions('manage_service')
def service_add_sms_sender(service_id):
form = ServiceSmsSenderForm()
sms_sender_count = len(service_api_client.get_sms_senders(service_id))
first_sms_sender = sms_sender_count == 0
first_sms_sender = current_service.count_sms_senders == 0
if form.validate_on_submit():
service_api_client.add_sms_sender(
current_service.id,
@@ -779,7 +711,7 @@ def service_add_sms_sender(service_id):
@login_required
@user_has_permissions('manage_service')
def service_edit_sms_sender(service_id, sms_sender_id):
sms_sender = service_api_client.get_sms_sender(service_id, sms_sender_id)
sms_sender = current_service.get_sms_sender(sms_sender_id)
is_inbound_number = sms_sender['inbound_number_id']
if is_inbound_number:
form = ServiceEditInboundNumberForm(is_default=sms_sender['is_default'])
@@ -875,7 +807,7 @@ def set_organisation_type(service_id):
@user_is_platform_admin
def set_free_sms_allowance(service_id):
form = FreeSMSAllowance(free_sms_allowance=billing_api_client.get_free_sms_fragment_limit_for_year(service_id))
form = FreeSMSAllowance(free_sms_allowance=current_service.free_sms_fragment_limit)
if form.validate_on_submit():
billing_api_client.create_or_update_free_sms_fragment_limit(service_id, form.free_sms_allowance.data)
@@ -896,7 +828,7 @@ def service_set_email_branding(service_id):
form = ServiceSetBranding(
all_email_brandings=get_branding_as_value_and_label(email_branding),
current_email_branding=current_service.email_branding,
current_email_branding=current_service.email_branding_id,
)
if form.validate_on_submit():
@@ -967,9 +899,6 @@ def set_letter_branding(service_id):
def request_letter_branding(service_id):
return render_template(
'views/service-settings/request-letter-branding.html',
letter_branding=email_branding_client.get_letter_email_branding()[
current_service.get('dvla_organisation', '001')
]
)
@@ -1009,9 +938,7 @@ def branding_request(service_id):
branding_type = 'govuk'
if current_service.email_branding:
email_branding = email_branding_client.get_email_branding(
current_service.email_branding)['email_branding']
branding_type = email_branding['brand_type']
branding_type = current_service.email_branding['brand_type']
form = BrandingOptionsEmail(
options=branding_type
@@ -1054,9 +981,9 @@ def branding_request(service_id):
@login_required
@user_is_platform_admin
def data_retention(service_id):
results = service_api_client.get_service_data_retention(service_id)
return render_template('views/service-settings/data-retention.html',
data_retention_settings=results)
return render_template(
'views/service-settings/data-retention.html',
)
@main.route("/services/<service_id>/data-retention/add", methods=['GET', 'POST'])
@@ -1079,7 +1006,7 @@ def add_data_retention(service_id):
@login_required
@user_is_platform_admin
def edit_data_retention(service_id, data_retention_id):
data_retention_item = service_api_client.get_service_data_retention_by_id(service_id, data_retention_id)
data_retention_item = current_service.get_data_retention_item(data_retention_id)
form = ServiceDataRetentionEditForm(days_of_retention=data_retention_item['days_of_retention'])
if form.validate_on_submit():
service_api_client.update_service_data_retention(service_id, data_retention_id, form.days_of_retention.data)

View File

@@ -1,6 +1,11 @@
from notifications_utils.field import Field
from werkzeug.utils import cached_property
from app.notify_client.billing_api_client import billing_api_client
from app.notify_client.email_branding_client import email_branding_client
from app.notify_client.inbound_number_client import inbound_number_client
from app.notify_client.job_api_client import job_api_client
from app.notify_client.organisations_api_client import organisations_client
from app.notify_client.service_api_client import service_api_client
from app.notify_client.user_api_client import user_api_client
from app.utils import get_default_sms_sender
@@ -114,10 +119,28 @@ class Service():
return len(self.templates_by_type('sms')) > 0
@cached_property
def email_reply_to_addresses(self):
return service_api_client.get_reply_to_email_addresses(self.id)
@property
def has_email_reply_to_address(self):
return bool(service_api_client.get_reply_to_email_addresses(
self.id
))
return bool(self.email_reply_to_addresses)
@property
def count_email_reply_to_addresses(self):
return len(self.email_reply_to_addresses)
@property
def default_email_reply_to_address(self):
return next(
(
x['email_address']
for x in self.email_reply_to_addresses if x['is_default']
), None
)
def get_email_reply_to_address(self, id):
return service_api_client.get_reply_to_email_address(self.id, id)
@property
def needs_to_add_email_reply_to_address(self):
@@ -128,10 +151,38 @@ class Service():
return self.organisation_type in {'local', 'nhs'}
@cached_property
def sms_senders(self):
return service_api_client.get_sms_senders(self.id)
@property
def sms_senders_with_hints(self):
def attach_hint(sender):
hints = []
if sender['is_default']:
hints += ["default"]
if sender['inbound_number_id']:
hints += ["receives replies"]
if hints:
sender['hint'] = "(" + " and ".join(hints) + ")"
return sender
return [attach_hint(sender) for sender in self.sms_senders]
@property
def default_sms_sender(self):
return get_default_sms_sender(self.sms_senders)
@property
def count_sms_senders(self):
return len(self.sms_senders)
@property
def sms_sender_is_govuk(self):
return get_default_sms_sender(
service_api_client.get_sms_senders(self.id)
) in {'GOVUK', 'None'}
return self.default_sms_sender in {'GOVUK', 'None'}
def get_sms_sender(self, id):
return service_api_client.get_sms_sender(self.id, id)
@property
def needs_to_change_sms_sender(self):
@@ -141,6 +192,26 @@ class Service():
self.sms_sender_is_govuk,
))
@cached_property
def letter_contact_details(self):
return service_api_client.get_letter_contacts(self.id)
@property
def count_letter_contact_details(self):
return len(self.letter_contact_details)
@property
def default_letter_contact_block(self):
return next(
(
Field(x['contact_block'], html='escape')
for x in self.letter_contact_details if x['is_default']
), None
)
def get_letter_contact_block(self, id):
return service_api_client.get_letter_contact(self.id, id)
@property
def go_live_checklist_completed(self):
return all((
@@ -153,3 +224,42 @@ class Service():
@property
def go_live_checklist_completed_as_yes_no(self):
return 'Yes' if self.go_live_checklist_completed else 'No'
@cached_property
def free_sms_fragment_limit(self):
return billing_api_client.get_free_sms_fragment_limit_for_year(self.id) or 0
@cached_property
def data_retention(self):
return service_api_client.get_service_data_retention(self.id)
def get_data_retention_item(self, id):
return service_api_client.get_service_data_retention_by_id(self.id, id)
@property
def email_branding_id(self):
return self._dict['email_branding']
@cached_property
def email_branding(self):
if self.email_branding_id:
return email_branding_client.get_email_branding(self.email_branding_id)['email_branding']
return None
@cached_property
def letter_branding(self):
return email_branding_client.get_letter_email_branding().get(
self.dvla_organisation, '001'
)
@cached_property
def organisation_name(self):
return organisations_client.get_service_organisation(self.id).get('name', None)
@cached_property
def inbound_number(self):
return inbound_number_client.get_inbound_sms_number_for_service(self.id)['data'].get('number', '')
@property
def has_inbound_number(self):
return bool(self.inbound_number)

View File

@@ -81,17 +81,16 @@
{% call settings_row(if_has_permission='email') %}
{{ text_field('Email reply-to addresses') }}
{% call field(status='default' if default_reply_to_email_address == "Not set" else '') %}
{{ default_reply_to_email_address }}
{% if reply_to_email_address_count > 1 %}
{% call field(status='default' if default_reply_to_email_address == None else '') %}
{{ current_service.default_email_reply_to_address or 'Not set' }}
{% if current_service.count_email_reply_to_addresses > 1 %}
<div class="hint">
{{ '…and %d more' | format(reply_to_email_address_count - 1) }}
{{ '…and %d more' | format(current_service.count_email_reply_to_addresses - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if reply_to_email_address_count else 'Change',
'Manage' if current_service.count_email_reply_to_addresses else 'Change',
url_for('.service_email_reply_to',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
@@ -101,7 +100,7 @@
{% call settings_row(if_has_permission='email') %}
{{ text_field('Email branding') }}
{{ text_field('Your branding' if email_branding else 'GOV.UK') }}
{{ text_field('Your branding' if current_service.email_branding else 'GOV.UK') }}
{{ edit_field(
'Change',
url_for('.branding_request', service_id=current_service.id),
@@ -132,16 +131,16 @@
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Text message sender') }}
{% call field(status='default' if default_sms_sender == "None" else '') %}
{{ default_sms_sender | string | nl2br | safe if default_sms_sender else 'None'}}
{% if sms_sender_count > 1 %}
{% call field(status='default' if current_service.default_sms_sender == "None" else '') %}
{{ current_service.default_sms_sender | string | nl2br | safe if current_service.default_sms_sender else 'None'}}
{% if current_service.count_sms_senders > 1 %}
<div class="hint">
{{ '…and %d more' | format(sms_sender_count - 1) }}
{{ '…and %d more' | format(current_service.count_sms_senders - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if sms_sender_count else 'Change',
'Manage' if current_service.count_sms_senders > 1 else 'Change',
url_for('.service_sms_senders',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
@@ -151,7 +150,7 @@
{% call settings_row(if_has_permission='sms') %}
{{ text_field('Text messages start with service name') }}
{{ boolean_field(prefix_sms) }}
{{ boolean_field(current_service.prefix_sms) }}
{{ edit_field(
'Change',
url_for('.service_set_sms_prefix',
@@ -208,16 +207,16 @@
{% call settings_row(if_has_permission='letter') %}
{{ text_field('Sender addresses') }}
{% call field(status='default' if default_letter_contact_block == "Not set" else '') %}
{{ default_letter_contact_block | string | nl2br | safe if default_letter_contact_block else 'Not set'}}
{% if letter_contact_details_count > 1 %}
{% call field(status='default' if current_service.default_letter_contact_block == None else '') %}
{{ current_service.default_letter_contact_block | string | nl2br | safe if current_service.default_letter_contact_block else 'Not set'}}
{% if current_service.count_letter_contact_details > 1 %}
<div class="hint">
{{ '…and %d more' | format(letter_contact_details_count - 1) }}
{{ '…and %d more' | format(current_service.count_letter_contact_details - 1) }}
</div>
{% endif %}
{% endcall %}
{{ edit_field(
'Manage' if letter_contact_details_count else 'Change',
'Manage' if current_service.count_letter_contact_details else 'Change',
url_for('.service_letter_contact_details',
service_id=current_service.id),
permissions=['manage_service','manage_api_keys']
@@ -227,7 +226,7 @@
{% call settings_row(if_has_permission='letter') %}
{{ text_field('Letter branding') }}
{{ text_field(letter_branding) }}
{{ text_field(current_service.letter_branding) }}
{{ edit_field(
'Change',
url_for('.request_letter_branding', service_id=current_service.id),
@@ -297,7 +296,7 @@
) %}
{% call row() %}
{{ text_field('Organisation')}}
{{ optional_text_field(organisation or None) }}
{{ optional_text_field(current_service.organisation_name) }}
{{ edit_field('Change', url_for('.link_service_to_organisation', service_id=current_service.id)) }}
{% endcall %}
{% call row() %}
@@ -309,23 +308,23 @@
{% endcall %}
{% call row() %}
{{ text_field('Free text message allowance')}}
{{ text_field('{:,}'.format(free_sms_fragment_limit or 0)) }}
{{ text_field('{:,}'.format(current_service.free_sms_fragment_limit)) }}
{{ edit_field('Change', url_for('.set_free_sms_allowance', service_id=current_service.id)) }}
{% endcall %}
{% call row() %}
{{ text_field('Email branding' )}}
{{ text_field(email_branding.name or 'GOV.UK') }}
{{ text_field(current_service.email_branding.name or 'GOV.UK') }}
{{ edit_field('Change', url_for('.service_set_email_branding', service_id=current_service.id)) }}
{% endcall %}
{% call row() %}
{{ text_field('Letter branding')}}
{{ text_field(letter_branding) }}
{{ text_field(current_service.letter_branding) }}
{{ edit_field('Change', url_for('.set_letter_branding', service_id=current_service.id)) }}
{% endcall %}
{% call row() %}
{{ text_field('Data retention')}}
{% call field() %}
{{ data_retention | join(', ', attribute='notification_type') }}
{{ current_service.data_retention | join(', ', attribute='notification_type') }}
{% endcall %}
{{ edit_field('Change', url_for('.data_retention', service_id=current_service.id)) }}
{% endcall %}
@@ -354,7 +353,7 @@
</li>
{% if 'sms' in current_service.permissions %}
<li class="bottom-gutter">
{% if not can_receive_inbound %}
{% if not current_service.has_permission('inbound_sms') %}
<a href="{{ url_for('.service_set_inbound_number', service_id=current_service.id, set_inbound_sms=True) }}" class="button">
Allow inbound sms
</a>

View File

@@ -25,7 +25,7 @@
</div>
</div>
<div class="user-list">
{% if not data_retention_settings %}
{% if not current_service.data_retention %}
<div class="user-list-item">
<span class="hint">You havent added any data retention</span>
</div>
@@ -36,7 +36,7 @@
field_headings_visible=False,
caption_visible=False
) %}
{% for item in data_retention_settings %}
{% for item in current_service.data_retention %}
{% call row() %}
{{ text_field(item.notification_type | format_notification_type)}}
{{ text_field(item.days_of_retention) }}

View File

@@ -22,12 +22,12 @@
{% endif %}
</div>
<div class="user-list">
{% if not reply_to_email_addresses %}
{% if not current_service.email_reply_to_addresses %}
<div class="user-list-item">
<span class="hint">You havent added any email reply-to addresses yet</span>
</div>
{% endif %}
{% for item in reply_to_email_addresses %}
{% for item in current_service.email_reply_to_addresses %}
<div class="user-list-item">
<h3>
<span class="heading-small">{{ item.email_address }}</span>&ensp;<span class="hint">
@@ -39,7 +39,7 @@
{% if current_user.has_permissions('manage_service') %}
<a class="user-list-edit-link" href="{{ url_for('.service_edit_email_reply_to', service_id =current_service.id, reply_to_email_id = item.id) }}">Change</a>
{% endif %}
{% if reply_to_email_addresses|length > 1 %}
{% if current_service.count_email_reply_to_addresses > 1 %}
{{ api_key(item.id, thing="ID") }}
{% endif %}
</div>
@@ -58,7 +58,7 @@
<p>
Set up separate email addresses to receive replies
from your users.
{% if current_service.trial_mode and not reply_to_email_addresses %}
{% if current_service.trial_mode and not current_service.has_email_reply_to_address %}
Your service cant go live until youve added at least one
reply-to address.
{% endif %}

View File

@@ -12,7 +12,7 @@
<div class="grid-row">
<div class="column-three-quarters">
<p>
Your letters have the {{ letter_branding }} logo.
Your letters have the {{ current_service.letter_branding }} logo.
</p>
<p>
<a href="{{ url_for('main.feedback', ticket_type='ask-question-give-feedback', body='letter-branding') }}">Contact support</a>

View File

@@ -10,7 +10,7 @@
{% block maincolumn_content %}
<h1 class="heading-large">Set Inbound Number</h1>
{% if service_has_inbound_number %}
{% if current_service.has_inbound_number %}
<p> This service already has an inbound number </p>
{{ page_footer(
back_link=url_for('.service_settings', service_id=current_service.id),

View File

@@ -13,7 +13,7 @@
<h1 class="heading-large">Receive text messages</h1>
{% if 'inbound_sms' in current_service.permissions %}
<p>
Your service can receive text messages sent to {{ inbound_number }}.
Your service can receive text messages sent to {{ current_service.inbound_number }}.
</p>
<p>
If you want to turn this feature off,

View File

@@ -21,12 +21,12 @@
{% endif %}
</div>
<div class="user-list">
{% if not sms_senders %}
{% if not current_service.sms_senders %}
<div class="user-list-item">
<span class="hint">You havent added any text message senders yet</span>
</div>
{% endif %}
{% for item in sms_senders %}
{% for item in current_service.sms_senders_with_hints %}
<div class="user-list-item">
<h3>
<span class="heading-small">{{ item.sms_sender }}</span>
@@ -40,7 +40,7 @@
{% if current_user.has_permissions('manage_service') %}
<a class="user-list-edit-link" href="{{ url_for('.service_edit_sms_sender', service_id=current_service.id, sms_sender_id = item.id) }}">Change</a>
{% endif %}
{% if sms_senders|length > 1 %}
{% if current_service.count_sms_senders > 1 %}
{{ api_key(item.id, thing="ID") }}
{% endif %}
</div>

View File

@@ -60,7 +60,7 @@ def mock_get_service_settings_page_common(
'Label Value Action',
'Send text messages On Change',
'Text message sender GOVUK Manage',
'Text message sender GOVUK Change',
'Text messages start with service name On Change',
'International text messages Off Change',
'Receive text messages Off Change',
@@ -82,7 +82,7 @@ def mock_get_service_settings_page_common(
'Label Value Action',
'Send text messages On Change',
'Text message sender GOVUK Manage',
'Text message sender GOVUK Change',
'Text messages start with service name On Change',
'International text messages Off Change',
'Receive text messages Off Change',
@@ -143,7 +143,7 @@ def test_should_show_overview(
'Label Value Action',
'Send text messages On Change',
'Text message sender GOVUK Manage',
'Text message sender GOVUK Change',
'Text messages start with service name On Change',
'International text messages On Change',
'Receive text messages On Change',
@@ -164,7 +164,7 @@ def test_should_show_overview(
'Label Value Action',
'Send text messages On Change',
'Text message sender GOVUK Manage',
'Text message sender GOVUK Change',
'Text messages start with service name On Change',
'International text messages Off Change',
'Receive text messages Off Change',

View File

@@ -79,7 +79,10 @@ def multiple_reply_to_email_addresses(mocker):
}
]
return mocker.patch('app.service_api_client.get_reply_to_email_addresses', side_effect=_get)
return mocker.patch(
'app.notify_client.service_api_client.service_api_client.get_reply_to_email_addresses',
side_effect=_get,
)
@pytest.fixture(scope='function')
@@ -303,7 +306,7 @@ def multiple_sms_senders(mocker):
}
]
return mocker.patch('app.service_api_client.get_sms_senders', side_effect=_get)
return mocker.patch('app.notify_client.service_api_client.service_api_client.get_sms_senders', side_effect=_get)
@pytest.fixture(scope='function')
@@ -337,7 +340,7 @@ def multiple_sms_senders_with_diff_default(mocker):
}
]
return mocker.patch('app.service_api_client.get_sms_senders', side_effect=_get)
return mocker.patch('app.notify_client.service_api_client.service_api_client.get_sms_senders', side_effect=_get)
@pytest.fixture(scope='function')
@@ -363,7 +366,7 @@ def multiple_sms_senders_no_inbound(mocker):
}
]
return mocker.patch('app.service_api_client.get_sms_senders', side_effect=_get)
return mocker.patch('app.notify_client.service_api_client.service_api_client.get_sms_senders', side_effect=_get)
@pytest.fixture(scope='function')
@@ -389,7 +392,7 @@ def single_sms_sender(mocker):
}
]
return mocker.patch('app.service_api_client.get_sms_senders', side_effect=_get)
return mocker.patch('app.notify_client.service_api_client.service_api_client.get_sms_senders', side_effect=_get)
@pytest.fixture(scope='function')
@@ -405,7 +408,7 @@ def get_default_sms_sender(mocker):
'updated_at': None
}
return mocker.patch('app.service_api_client.get_sms_sender', side_effect=_get)
return mocker.patch('app.notify_client.service_api_client.service_api_client.get_sms_sender', side_effect=_get)
@pytest.fixture(scope='function')
@@ -2456,7 +2459,8 @@ def mock_get_all_email_branding(mocker):
return create_email_brandings(5, non_standard_values=non_standard_values, shuffle=shuffle)
return mocker.patch(
'app.email_branding_client.get_all_email_branding', side_effect=_get_all_email_branding
'app.notify_client.email_branding_client.email_branding_client.get_all_email_branding',
side_effect=_get_all_email_branding,
)