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:
Chris Hill-Scott
2019-07-05 13:17:48 +01:00
parent 17bf06d04c
commit 44d5dc44d3
7 changed files with 136 additions and 46 deletions

View File

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