mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-27 11:19:21 -04:00
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:
@@ -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']
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 haven’t 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) }}
|
||||
|
||||
@@ -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 haven’t 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> <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 can’t go live until you’ve added at least one
|
||||
reply-to address.
|
||||
{% endif %}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 haven’t 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>
|
||||
|
||||
Reference in New Issue
Block a user