Remove domains from branding forms

We’re deprecating storing the domain as text on a branding in favour of
a database relationship between branding and organisation.

We need to do this now in order to remove the validation on these fields
(which depends on the data in `domains.yml`)
This commit is contained in:
Chris Hill-Scott
2019-04-04 11:09:09 +01:00
parent 9684e962ae
commit 470b8a2912
15 changed files with 48 additions and 298 deletions

View File

@@ -36,10 +36,8 @@ from wtforms.widgets import CheckboxInput, ListWidget
from app.main.validators import (
Blacklist,
CanonicalGovernmentDomain,
CsvFileValidator,
DoesNotStartWithDoubleZero,
KnownGovernmentDomain,
LettersNumbersAndFullStopsOnly,
NoCommasInPlaceHolders,
OnlyGSMCharacters,
@@ -47,7 +45,7 @@ from app.main.validators import (
ValidGovEmail,
)
from app.models.user import permissions, roles
from app.utils import AgreementInfo, guess_name_from_email_address
from app.utils import guess_name_from_email_address
def get_time_value_and_label(future_time):
@@ -990,23 +988,9 @@ class PreviewBranding(StripWhitespaceForm):
branding_style = HiddenFieldWithNoneOption('branding_style')
class GovernmentDomainField(StringField):
validators = [
KnownGovernmentDomain(),
CanonicalGovernmentDomain(),
]
def post_validate(self, form, validation_stopped):
if self.data == '':
self.data = None
if self.data and not self.errors:
self.data = AgreementInfo(self.data).canonical_domain
class ServiceUpdateEmailBranding(StripWhitespaceForm):
name = StringField('Name of brand')
text = StringField('Text')
domain = GovernmentDomainField('Domain')
colour = StringField(
'Colour',
validators=[
@@ -1041,7 +1025,6 @@ class SVGFileUpload(StripWhitespaceForm):
class ServiceLetterBrandingDetails(StripWhitespaceForm):
name = StringField('Name of brand', validators=[DataRequired()])
domain = GovernmentDomainField('Domain')
class PDFUploadForm(StripWhitespaceForm):

View File

@@ -11,7 +11,7 @@ from wtforms.validators import Email
from app import formatted_list
from app.main._blacklisted_passwords import blacklisted_passwords
from app.utils import AgreementInfo, Spreadsheet, is_gov_user
from app.utils import Spreadsheet, is_gov_user
class Blacklist:
@@ -111,34 +111,3 @@ class DoesNotStartWithDoubleZero:
def __call__(self, form, field):
if field.data and field.data.startswith("00"):
raise ValidationError(self.message)
class KnownGovernmentDomain:
message = 'Not a known government domain (you might need to update domains.yml)'
def __call__(self, form, field):
if field.data and AgreementInfo(field.data).owner is None:
raise ValidationError(self.message)
class CanonicalGovernmentDomain:
message = 'Not {} domain (use {} if appropriate)'
def __call__(self, form, field):
if not field.data:
return
domain = AgreementInfo(field.data)
if not domain.is_canonical:
raise ValidationError(
self.message.format('a canonical', domain.canonical_domain)
)
if field.data != domain.canonical_domain:
raise ValidationError(
self.message.format('an organisation-level', domain.canonical_domain)
)

View File

@@ -39,7 +39,6 @@ def update_email_branding(branding_id, logo=None):
name=email_branding['name'],
text=email_branding['text'],
colour=email_branding['colour'],
domain=email_branding['domain'],
brand_type=email_branding['brand_type']
)
@@ -67,7 +66,6 @@ def update_email_branding(branding_id, logo=None):
name=form.name.data,
text=form.text.data,
colour=form.colour.data,
domain=form.domain.data,
brand_type=form.brand_type.data,
)
@@ -115,7 +113,6 @@ def create_email_branding(logo=None):
name=form.name.data,
text=form.text.data,
colour=form.colour.data,
domain=form.domain.data,
brand_type=form.brand_type.data,
)

View File

@@ -56,7 +56,6 @@ def update_letter_branding(branding_id, logo=None):
file_upload_form = SVGFileUpload()
letter_branding_details_form = ServiceLetterBrandingDetails(
name=letter_branding['name'],
domain=letter_branding['domain']
)
file_upload_form_submitted = file_upload_form.file.data
@@ -87,7 +86,6 @@ def update_letter_branding(branding_id, logo=None):
branding_id=branding_id,
filename=db_filename,
name=letter_branding_details_form.name.data,
domain=letter_branding_details_form.domain.data
)
return redirect(url_for('main.letter_branding'))
@@ -98,7 +96,6 @@ def update_letter_branding(branding_id, logo=None):
branding_id=branding_id,
filename=db_filename,
name=letter_branding_details_form.name.data,
domain=letter_branding_details_form.domain.data
)
upload_letter_logos(logo, db_filename, png_file, session['user_id'])
@@ -106,9 +103,7 @@ def update_letter_branding(branding_id, logo=None):
return redirect(url_for('main.letter_branding'))
except HTTPError as e:
if 'domain' in e.message:
letter_branding_details_form.domain.errors.append(e.message['domain'][0])
elif 'name' in e.message:
if 'name' in e.message:
letter_branding_details_form.name.errors.append(e.message['name'][0])
else:
raise e
@@ -118,7 +113,6 @@ def update_letter_branding(branding_id, logo=None):
branding_id=branding_id,
filename=letter_branding['filename'],
name=letter_branding['name'],
domain=letter_branding['domain']
)
file_upload_form.file.errors = ['Error saving uploaded file - try uploading again']
@@ -165,7 +159,6 @@ def create_letter_branding(logo=None):
letter_branding_client.create_letter_branding(
filename=db_filename,
name=letter_branding_details_form.name.data,
domain=letter_branding_details_form.domain.data,
)
upload_letter_logos(logo, db_filename, png_file, session['user_id'])
@@ -173,9 +166,7 @@ def create_letter_branding(logo=None):
return redirect(url_for('main.letter_branding'))
except HTTPError as e:
if 'domain' in e.message:
letter_branding_details_form.domain.errors.append(e.message['domain'][0])
elif 'name' in e.message:
if 'name' in e.message:
letter_branding_details_form.name.errors.append(e.message['name'][0])
else:
raise e

View File

@@ -14,33 +14,25 @@ class EmailBrandingClient(NotifyAdminAPIClient):
brandings.sort(key=lambda branding: branding[sort_key].lower())
return brandings
def get_email_branding_id_for_domain(self, domain):
for branding in self.get_all_email_branding():
if domain and branding.get('domain') == domain:
return branding['id']
return None
@cache.delete('email_branding')
def create_email_branding(self, logo, name, text, colour, domain, brand_type):
def create_email_branding(self, logo, name, text, colour, brand_type):
data = {
"logo": logo,
"name": name,
"text": text,
"colour": colour,
"domain": domain,
"brand_type": brand_type
}
return self.post(url="/email-branding", data=data)
@cache.delete('email_branding')
@cache.delete('email_branding-{branding_id}')
def update_email_branding(self, branding_id, logo, name, text, colour, domain, brand_type):
def update_email_branding(self, branding_id, logo, name, text, colour, brand_type):
data = {
"logo": logo,
"name": name,
"text": text,
"colour": colour,
"domain": domain,
"brand_type": brand_type
}
return self.post(url="/email-branding/{}".format(branding_id), data=data)

View File

@@ -12,22 +12,19 @@ class LetterBrandingClient(NotifyAdminAPIClient):
return self.get(url='/letter-branding')
@cache.delete('letter_branding')
def create_letter_branding(self, filename, name, domain):
def create_letter_branding(self, filename, name):
data = {
"filename": filename,
"name": name,
"domain": domain,
}
return self.post(url="/letter-branding", data=data)
@cache.delete('letter_branding')
@cache.delete('letter_branding-{branding_id}')
def update_letter_branding(self, branding_id, filename, name, domain):
def update_letter_branding(self, branding_id, filename, name):
data = {
"filename": filename,
"name": name,
"domain": domain,
}
return self.post(url="/letter-branding/{}".format(branding_id), data=data)

View File

@@ -28,7 +28,6 @@
<div style='margin-top:15px;'>{{textbox(form.name)}}</div>
<div style='margin-top:15px;'>{{textbox(form.text)}}</div>
{{ textbox(form.colour, width='1-4', colour_preview=True) }}
<div style='margin-top:15px;'>{{textbox(form.domain)}}</div>
{{ radios(form.brand_type) }}
{{ page_footer(
'Save',

View File

@@ -24,13 +24,6 @@
{{ brand.name or 'Unnamed' }}
</a>
</div>
<p class="message-type">
{% if brand.domain %}
Default for {{ brand.domain }}
{% else %}
{% endif %}
</p>
</div>
{% endfor %}
</nav>

View File

@@ -25,7 +25,6 @@
{% call form_wrapper() %}
<div class="form-group">
<div style='margin-top:15px;'>{{textbox(letter_branding_details_form.name)}}</div>
<div style='margin-top:15px;'>{{textbox(letter_branding_details_form.domain)}}</div>
{{ page_footer(
'Save',
button_name='operation',

View File

@@ -24,13 +24,6 @@
{{ brand.name }}
</a>
</div>
<p class="message-type">
{% if brand.domain %}
Default for {{ brand.domain }}
{% else %}
{% endif %}
</p>
</div>
{% endfor %}
</nav>