mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-07-26 02:49:16 -04:00
Allow deleting default letter contact blocks
It’s possible to delete default letter contact blocks because there is a fallback – having a blank letter contact block. This is different to SMS senders and reply to addresses. For this to make sense it also means: - adding the ‘blank’ letter contact block to the list of letter contact blocks - having a way of setting the default back to being blank
This commit is contained in:
@@ -755,11 +755,10 @@ def service_edit_letter_contact(service_id, letter_contact_id):
|
||||
if request.method == 'GET':
|
||||
form.is_default.data = letter_contact_block['is_default']
|
||||
if form.validate_on_submit():
|
||||
service_api_client.update_letter_contact(
|
||||
current_service.id,
|
||||
letter_contact_id=letter_contact_id,
|
||||
current_service.edit_letter_contact_block(
|
||||
id=letter_contact_id,
|
||||
contact_block=form.letter_contact_block.data.replace('\r', '') or None,
|
||||
is_default=True if letter_contact_block['is_default'] else form.is_default.data
|
||||
is_default=letter_contact_block['is_default'] or form.is_default.data
|
||||
)
|
||||
return redirect(url_for('.service_letter_contact_details', service_id=service_id))
|
||||
|
||||
@@ -771,6 +770,13 @@ def service_edit_letter_contact(service_id, letter_contact_id):
|
||||
letter_contact_id=letter_contact_block['id'])
|
||||
|
||||
|
||||
@main.route("/services/<service_id>/service-settings/letter-contact/make-blank-default")
|
||||
@user_has_permissions('manage_service')
|
||||
def service_make_blank_default_letter_contact(service_id):
|
||||
current_service.remove_default_letter_contact_block()
|
||||
return redirect(url_for('.service_letter_contact_details', service_id=service_id))
|
||||
|
||||
|
||||
@main.route(
|
||||
"/services/<service_id>/service-settings/letter-contact/<letter_contact_id>/delete",
|
||||
methods=['POST'],
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from flask import abort, current_app
|
||||
from flask import Markup, abort, current_app
|
||||
from notifications_utils.field import Field
|
||||
from notifications_utils.formatters import nl2br
|
||||
from notifications_utils.take import Take
|
||||
from werkzeug.utils import cached_property
|
||||
|
||||
from app.models import JSONModel
|
||||
@@ -324,11 +326,36 @@ class Service(JSONModel):
|
||||
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']
|
||||
letter_contact_block
|
||||
for letter_contact_block in self.letter_contact_details
|
||||
if letter_contact_block['is_default']
|
||||
), None
|
||||
)
|
||||
|
||||
@property
|
||||
def default_letter_contact_block_html(self):
|
||||
if self.default_letter_contact_block:
|
||||
return Markup(Take(Field(
|
||||
self.default_letter_contact_block['contact_block'],
|
||||
html='escape',
|
||||
)).then(
|
||||
nl2br
|
||||
))
|
||||
return ''
|
||||
|
||||
def edit_letter_contact_block(self, id, contact_block, is_default):
|
||||
service_api_client.update_letter_contact(
|
||||
self.id, letter_contact_id=id, contact_block=contact_block, is_default=is_default,
|
||||
)
|
||||
|
||||
def remove_default_letter_contact_block(self):
|
||||
if self.default_letter_contact_block:
|
||||
self.edit_letter_contact_block(
|
||||
self.default_letter_contact_block['id'],
|
||||
self.default_letter_contact_block['contact_block'],
|
||||
is_default=False,
|
||||
)
|
||||
|
||||
def get_letter_contact_block(self, id):
|
||||
return service_api_client.get_letter_contact(self.id, id)
|
||||
|
||||
|
||||
@@ -260,6 +260,7 @@ class HeaderNavigation(Navigation):
|
||||
'service_email_reply_to',
|
||||
'service_letter_contact_details',
|
||||
'service_letter_validation_preview',
|
||||
'service_make_blank_default_letter_contact',
|
||||
'service_name_change',
|
||||
'service_name_change_confirm',
|
||||
'service_preview_email_branding',
|
||||
@@ -390,6 +391,7 @@ class MainNavigation(Navigation):
|
||||
'service_edit_sms_sender',
|
||||
'service_email_reply_to',
|
||||
'service_letter_contact_details',
|
||||
'service_make_blank_default_letter_contact',
|
||||
'service_name_change',
|
||||
'service_name_change_confirm',
|
||||
'service_preview_email_branding',
|
||||
@@ -787,6 +789,7 @@ class CaseworkNavigation(Navigation):
|
||||
'service_email_reply_to',
|
||||
'service_letter_contact_details',
|
||||
'service_letter_validation_preview',
|
||||
'service_make_blank_default_letter_contact',
|
||||
'service_name_change',
|
||||
'service_name_change_confirm',
|
||||
'service_preview_email_branding',
|
||||
@@ -1059,6 +1062,7 @@ class OrgNavigation(Navigation):
|
||||
'service_email_reply_to',
|
||||
'service_letter_contact_details',
|
||||
'service_letter_validation_preview',
|
||||
'service_make_blank_default_letter_contact',
|
||||
'service_name_change',
|
||||
'service_name_change_confirm',
|
||||
'service_preview_email_branding',
|
||||
|
||||
@@ -213,8 +213,14 @@
|
||||
|
||||
{% call settings_row(if_has_permission='letter') %}
|
||||
{{ text_field('Sender addresses') }}
|
||||
{% 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'}}
|
||||
{% call field(status='' if current_service.count_letter_contact_details else 'default') %}
|
||||
{% if current_service.default_letter_contact_block %}
|
||||
{{ current_service.default_letter_contact_block_html }}
|
||||
{% elif current_service.count_letter_contact_details %}
|
||||
Blank
|
||||
{% else %}
|
||||
Not set
|
||||
{% endif %}
|
||||
{% if current_service.count_letter_contact_details > 1 %}
|
||||
<div class="hint">
|
||||
{{ '…and %d more' | format(current_service.count_letter_contact_details - 1) }}
|
||||
|
||||
@@ -17,11 +17,18 @@
|
||||
) }}
|
||||
</div>
|
||||
<div class="user-list">
|
||||
{% if not letter_contact_details %}
|
||||
<div class="user-list-item">
|
||||
<span class="hint">You haven’t added any letter contact details yet</span>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="user-list-item">
|
||||
<span class="hint">
|
||||
Blank
|
||||
{% if current_service.default_letter_contact_block %}
|
||||
{% if current_user.has_permissions('manage_service') %}
|
||||
<a class="user-list-edit-link" href="{{ url_for('.service_make_blank_default_letter_contact', service_id =current_service.id) }}">Make default</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
(default)
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
{% for item in letter_contact_details %}
|
||||
<div class="user-list-item">
|
||||
<p>
|
||||
|
||||
@@ -24,20 +24,24 @@
|
||||
rows=10,
|
||||
highlight_tags=True
|
||||
) }}
|
||||
|
||||
|
||||
{% if form.is_default.data %}
|
||||
<p class="form-group">
|
||||
This is currently your default address for {{ current_service.name }}
|
||||
This is the default address for {{ current_service.name }}
|
||||
</p>
|
||||
{% else %}
|
||||
<div class="form-group">
|
||||
{{ checkbox(form.is_default) }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ page_footer(
|
||||
'Save',
|
||||
delete_link=url_for('.service_confirm_delete_letter_contact', service_id=current_service.id, letter_contact_id=letter_contact_id),
|
||||
delete_link_text='Delete'
|
||||
) }}
|
||||
|
||||
{% endcall %}
|
||||
|
||||
{% endblock %}
|
||||
|
||||
Reference in New Issue
Block a user