mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-08-14 23:08:07 -04:00
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:
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
)
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user