Merge pull request #4182 from alphagov/refactor-email-branding-181415991

First set of refactorings for branding
This commit is contained in:
Ben Thorner
2022-03-22 13:43:10 +00:00
committed by GitHub
11 changed files with 314 additions and 361 deletions
+3 -3
View File
@@ -2,7 +2,7 @@ from flask import current_app, redirect, render_template, session, url_for
from app import email_branding_client
from app.main import main
from app.main.forms import SearchByNameForm, ServiceUpdateEmailBranding
from app.main.forms import AdminEditEmailBrandingForm, SearchByNameForm
from app.s3_client.s3_logo_client import (
TEMP_TAG,
delete_email_temp_file,
@@ -32,7 +32,7 @@ def email_branding():
def update_email_branding(branding_id, logo=None):
email_branding = email_branding_client.get_email_branding(branding_id)['email_branding']
form = ServiceUpdateEmailBranding(
form = AdminEditEmailBrandingForm(
name=email_branding['name'],
text=email_branding['text'],
colour=email_branding['colour'],
@@ -86,7 +86,7 @@ def update_email_branding(branding_id, logo=None):
@main.route("/email-branding/create/<logo>", methods=['GET', 'POST'])
@user_is_platform_admin
def create_email_branding(logo=None):
form = ServiceUpdateEmailBranding(brand_type='org')
form = AdminEditEmailBrandingForm(brand_type='org')
if form.validate_on_submit():
if form.file.data:
+2 -2
View File
@@ -5,7 +5,7 @@ from notifications_python_client.errors import HTTPError
from app import user_api_client
from app.event_handlers import create_archive_user_event
from app.main import main
from app.main.forms import AuthTypeForm, SearchUsersByEmailForm
from app.main.forms import AdminSearchUsersByEmailForm, AuthTypeForm
from app.models.user import User
from app.utils.user import user_is_platform_admin
@@ -13,7 +13,7 @@ from app.utils.user import user_is_platform_admin
@main.route("/find-users-by-email", methods=['GET', 'POST'])
@user_is_platform_admin
def find_users_by_email():
form = SearchUsersByEmailForm()
form = AdminSearchUsersByEmailForm()
users_found = None
if form.validate_on_submit():
users_found = user_api_client.find_users_by_full_or_partial_email(form.search.data)['data']
+3 -3
View File
@@ -12,8 +12,8 @@ from notifications_python_client.errors import HTTPError
from app import letter_branding_client
from app.main import main
from app.main.forms import (
AdminEditLetterBrandingForm,
SearchByNameForm,
ServiceLetterBrandingDetails,
SVGFileUpload,
)
from app.s3_client.s3_logo_client import (
@@ -48,7 +48,7 @@ def update_letter_branding(branding_id, logo=None):
letter_branding = letter_branding_client.get_letter_branding(branding_id)
file_upload_form = SVGFileUpload()
letter_branding_details_form = ServiceLetterBrandingDetails(
letter_branding_details_form = AdminEditLetterBrandingForm(
name=letter_branding['name'],
)
@@ -123,7 +123,7 @@ def update_letter_branding(branding_id, logo=None):
@user_is_platform_admin
def create_letter_branding(logo=None):
file_upload_form = SVGFileUpload()
letter_branding_details_form = ServiceLetterBrandingDetails()
letter_branding_details_form = AdminEditLetterBrandingForm()
file_upload_form_submitted = file_upload_form.file.data
details_form_submitted = request.form.get('operation') == 'branding-details'
+17 -17
View File
@@ -19,21 +19,21 @@ from app.main import main
from app.main.forms import (
AddGPOrganisationForm,
AddNHSLocalOrganisationForm,
BillingDetailsForm,
EditNotesForm,
GoLiveNotesForm,
AdminBillingDetailsForm,
AdminNewOrganisationForm,
AdminNotesForm,
AdminOrganisationDomainsForm,
AdminOrganisationGoLiveNotesForm,
AdminPreviewBrandingForm,
AdminSetEmailBrandingForm,
AdminSetLetterBrandingForm,
InviteOrgUserForm,
NewOrganisationForm,
OrganisationAgreementSignedForm,
OrganisationCrownStatusForm,
OrganisationDomainsForm,
OrganisationOrganisationTypeForm,
PreviewBranding,
RenameOrganisationForm,
SearchByNameForm,
SearchUsersForm,
SetEmailBranding,
SetLetterBranding,
)
from app.main.views.dashboard import (
get_tuples_of_financial_years,
@@ -60,7 +60,7 @@ def organisations():
@main.route("/organisations/add", methods=['GET', 'POST'])
@user_is_platform_admin
def add_organisation():
form = NewOrganisationForm()
form = AdminNewOrganisationForm()
if form.validate_on_submit():
try:
@@ -405,7 +405,7 @@ def edit_organisation_email_branding(org_id):
email_branding = email_branding_client.get_all_email_branding()
form = SetEmailBranding(
form = AdminSetEmailBrandingForm(
all_branding_options=get_branding_as_value_and_label(email_branding),
current_branding=current_organisation.email_branding_id,
)
@@ -430,7 +430,7 @@ def organisation_preview_email_branding(org_id):
branding_style = request.args.get('branding_style', None)
form = PreviewBranding(branding_style=branding_style)
form = AdminPreviewBrandingForm(branding_style=branding_style)
if form.validate_on_submit():
current_organisation.update(
@@ -451,7 +451,7 @@ def organisation_preview_email_branding(org_id):
def edit_organisation_letter_branding(org_id):
letter_branding = letter_branding_client.get_all_letter_branding()
form = SetLetterBranding(
form = AdminSetLetterBrandingForm(
all_branding_options=get_branding_as_value_and_label(letter_branding),
current_branding=current_organisation.letter_branding_id,
)
@@ -475,7 +475,7 @@ def edit_organisation_letter_branding(org_id):
def organisation_preview_letter_branding(org_id):
branding_style = request.args.get('branding_style')
form = PreviewBranding(branding_style=branding_style)
form = AdminPreviewBrandingForm(branding_style=branding_style)
if form.validate_on_submit():
current_organisation.update(
@@ -495,7 +495,7 @@ def organisation_preview_letter_branding(org_id):
@user_is_platform_admin
def edit_organisation_domains(org_id):
form = OrganisationDomainsForm()
form = AdminOrganisationDomainsForm()
if form.validate_on_submit():
try:
@@ -530,7 +530,7 @@ def edit_organisation_domains(org_id):
@user_is_platform_admin
def edit_organisation_go_live_notes(org_id):
form = GoLiveNotesForm()
form = AdminOrganisationGoLiveNotesForm()
if form.validate_on_submit():
organisations_client.update_organisation(
@@ -551,7 +551,7 @@ def edit_organisation_go_live_notes(org_id):
@main.route("/organisations/<uuid:org_id>/settings/notes", methods=['GET', 'POST'])
@user_is_platform_admin
def edit_organisation_notes(org_id):
form = EditNotesForm(notes=current_organisation.notes)
form = AdminNotesForm(notes=current_organisation.notes)
if form.validate_on_submit():
@@ -572,7 +572,7 @@ def edit_organisation_notes(org_id):
@main.route("/organisations/<uuid:org_id>/settings/edit-billing-details", methods=['GET', 'POST'])
@user_is_platform_admin
def edit_organisation_billing_details(org_id):
form = BillingDetailsForm(
form = AdminBillingDetailsForm(
billing_contact_email_addresses=current_organisation.billing_contact_email_addresses,
billing_contact_names=current_organisation.billing_contact_names,
billing_reference=current_organisation.billing_reference,
+4 -4
View File
@@ -18,11 +18,11 @@ from app import (
from app.extensions import redis_client
from app.main import main
from app.main.forms import (
AdminClearCacheForm,
AdminReturnedLettersForm,
BillingReportDateFilterForm,
ClearCacheForm,
DateFilterForm,
RequiredDateFilterForm,
ReturnedLettersForm,
)
from app.statistics_utils import (
get_formatted_percentage,
@@ -409,7 +409,7 @@ def platform_admin_list_complaints():
@main.route("/platform-admin/returned-letters", methods=["GET", "POST"])
@user_is_platform_admin
def platform_admin_returned_letters():
form = ReturnedLettersForm()
form = AdminReturnedLettersForm()
if form.validate_on_submit():
references = [
@@ -487,7 +487,7 @@ def clear_cache():
]),
])
form = ClearCacheForm()
form = AdminClearCacheForm()
form.model_type.choices = [
(key, key.replace('_', ' ').title()) for key in CACHE_KEYS
+3 -3
View File
@@ -7,7 +7,7 @@ from werkzeug.utils import redirect
from app import format_date_numeric, provider_client
from app.main import main
from app.main.forms import ProviderForm, ProviderRatioForm
from app.main.forms import AdminProviderForm, AdminProviderRatioForm
from app.utils.user import user_is_platform_admin
PROVIDER_PRIORITY_MEANING_SWITCHOVER = datetime(2019, 11, 29, 11, 0).isoformat()
@@ -48,7 +48,7 @@ def add_monthly_traffic(domestic_sms_providers):
@user_is_platform_admin
def edit_provider(provider_id):
provider = provider_client.get_provider_by_id(provider_id)['provider_details']
form = ProviderForm(active=provider['active'], priority=provider['priority'])
form = AdminProviderForm(active=provider['active'], priority=provider['priority'])
if form.validate_on_submit():
provider_client.update_provider(provider_id, form.priority.data)
@@ -67,7 +67,7 @@ def edit_sms_provider_ratio():
if provider['notification_type'] == 'sms'
], key=itemgetter('identifier'), reverse=True)
form = ProviderRatioForm(ratio=providers[0]['priority'])
form = AdminProviderRatioForm(ratio=providers[0]['priority'])
if len(providers) < 2:
abort(400)
+40 -38
View File
@@ -38,32 +38,34 @@ from app.extensions import zendesk_client
from app.formatters import email_safe
from app.main import main
from app.main.forms import (
BillingDetailsForm,
BrandingOptions,
EditNotesForm,
AdminBillingDetailsForm,
AdminNotesForm,
AdminPreviewBrandingForm,
AdminServiceAddDataRetentionForm,
AdminServiceEditDataRetentionForm,
AdminServiceInboundNumberForm,
AdminServiceMessageLimitForm,
AdminServiceRateLimitForm,
AdminServiceSMSAllowanceForm,
AdminSetEmailBrandingForm,
AdminSetLetterBrandingForm,
AdminSetOrganisationForm,
ChooseBrandingForm,
ChooseEmailBrandingForm,
ChooseLetterBrandingForm,
EstimateUsageForm,
FreeSMSAllowance,
LinkOrganisationsForm,
MessageLimit,
PreviewBranding,
RateLimit,
RenameServiceForm,
SearchByNameForm,
ServiceBroadcastAccountTypeForm,
ServiceBroadcastChannelForm,
ServiceBroadcastNetworkForm,
ServiceContactDetailsForm,
ServiceDataRetentionEditForm,
ServiceDataRetentionForm,
ServiceEditInboundNumberForm,
ServiceInboundNumberForm,
ServiceLetterContactBlockForm,
ServiceOnOffSettingForm,
ServiceReplyToEmailForm,
ServiceSmsSenderForm,
ServiceSwitchChannelForm,
SetEmailBranding,
SetLetterBranding,
SMSPrefixForm,
SomethingElseBrandingForm,
)
@@ -89,7 +91,7 @@ def service_settings(service_id):
return render_template(
'views/service-settings.html',
service_permissions=PLATFORM_ADMIN_SERVICE_PERMISSIONS,
email_branding_options=BrandingOptions(current_service, branding_type='email')
email_branding_options=ChooseBrandingForm(current_service, branding_type='email')
)
@@ -648,7 +650,7 @@ def service_set_inbound_number(service_id):
(number['id'], number['number']) for number in available_inbound_numbers['data']
]
no_available_numbers = available_inbound_numbers['data'] == []
form = ServiceInboundNumberForm(
form = AdminServiceInboundNumberForm(
inbound_number_choices=inbound_numbers_value_and_label
)
@@ -970,7 +972,7 @@ def service_delete_sms_sender(service_id, sms_sender_id):
@user_is_platform_admin
def set_free_sms_allowance(service_id):
form = FreeSMSAllowance(free_sms_allowance=current_service.free_sms_fragment_limit)
form = AdminServiceSMSAllowanceForm(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)
@@ -987,7 +989,7 @@ def set_free_sms_allowance(service_id):
@user_is_platform_admin
def set_message_limit(service_id):
form = MessageLimit(message_limit=current_service.message_limit)
form = AdminServiceMessageLimitForm(message_limit=current_service.message_limit)
if form.validate_on_submit():
current_service.update(message_limit=form.message_limit.data)
@@ -1004,7 +1006,7 @@ def set_message_limit(service_id):
@user_is_platform_admin
def set_rate_limit(service_id):
form = RateLimit(rate_limit=current_service.rate_limit)
form = AdminServiceRateLimitForm(rate_limit=current_service.rate_limit)
if form.validate_on_submit():
current_service.update(rate_limit=form.rate_limit.data)
@@ -1022,7 +1024,7 @@ def set_rate_limit(service_id):
def service_set_email_branding(service_id):
email_branding = email_branding_client.get_all_email_branding()
form = SetEmailBranding(
form = AdminSetEmailBrandingForm(
all_branding_options=get_branding_as_value_and_label(email_branding),
current_branding=current_service.email_branding_id,
)
@@ -1046,7 +1048,7 @@ def service_set_email_branding(service_id):
def service_preview_email_branding(service_id):
branding_style = request.args.get('branding_style', None)
form = PreviewBranding(branding_style=branding_style)
form = AdminPreviewBrandingForm(branding_style=branding_style)
if form.validate_on_submit():
current_service.update(
@@ -1067,7 +1069,7 @@ def service_preview_email_branding(service_id):
def service_set_letter_branding(service_id):
letter_branding = letter_branding_client.get_all_letter_branding()
form = SetLetterBranding(
form = AdminSetLetterBrandingForm(
all_branding_options=get_branding_as_value_and_label(letter_branding),
current_branding=current_service.letter_branding_id,
)
@@ -1091,7 +1093,7 @@ def service_set_letter_branding(service_id):
def service_preview_letter_branding(service_id):
branding_style = request.args.get('branding_style')
form = PreviewBranding(branding_style=branding_style)
form = AdminPreviewBrandingForm(branding_style=branding_style)
if form.validate_on_submit():
current_service.update(
@@ -1113,7 +1115,7 @@ def link_service_to_organisation(service_id):
all_organisations = organisations_client.get_organisations()
form = LinkOrganisationsForm(
form = AdminSetOrganisationForm(
choices=convert_dictionary_to_wtforms_choices_format(all_organisations, 'id', 'name'),
organisations=current_service.organisation_id
)
@@ -1135,7 +1137,7 @@ def link_service_to_organisation(service_id):
def create_email_branding_zendesk_ticket(form_option_selected, detail=None):
form = BrandingOptions(current_service)
form = ChooseEmailBrandingForm(current_service)
ticket_message = render_template(
'support-tickets/branding-request.txt',
@@ -1159,7 +1161,7 @@ def create_email_branding_zendesk_ticket(form_option_selected, detail=None):
@main.route("/services/<uuid:service_id>/service-settings/email-branding", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def email_branding_request(service_id):
form = BrandingOptions(current_service, branding_type='email')
form = ChooseEmailBrandingForm(current_service)
branding_name = current_service.email_branding_name
if form.validate_on_submit():
return redirect(
@@ -1176,9 +1178,9 @@ def email_branding_request(service_id):
)
def check_branding_allowed_for_service(branding):
def check_email_branding_allowed_for_service(branding):
allowed_branding_for_service = dict(
BrandingOptions.get_available_choices(current_service, branding_type='email')
ChooseEmailBrandingForm.get_available_choices(current_service, branding_type='email')
)
if branding not in allowed_branding_for_service:
abort(404)
@@ -1187,7 +1189,7 @@ def check_branding_allowed_for_service(branding):
@main.route("/services/<uuid:service_id>/service-settings/email-branding/govuk", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def email_branding_govuk(service_id):
check_branding_allowed_for_service('govuk')
check_email_branding_allowed_for_service('govuk')
if request.method == 'POST':
current_service.update(email_branding=None)
@@ -1201,7 +1203,7 @@ def email_branding_govuk(service_id):
@main.route("/services/<uuid:service_id>/service-settings/email-branding/govuk-and-org", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def email_branding_govuk_and_org(service_id):
check_branding_allowed_for_service('govuk_and_org')
check_email_branding_allowed_for_service('govuk_and_org')
if request.method == 'POST':
create_email_branding_zendesk_ticket('govuk_and_org')
@@ -1215,7 +1217,7 @@ def email_branding_govuk_and_org(service_id):
@main.route("/services/<uuid:service_id>/service-settings/email-branding/nhs", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def email_branding_nhs(service_id):
check_branding_allowed_for_service('nhs')
check_email_branding_allowed_for_service('nhs')
if request.method == 'POST':
current_service.update(email_branding=NHS_BRANDING_ID)
@@ -1229,7 +1231,7 @@ def email_branding_nhs(service_id):
@main.route("/services/<uuid:service_id>/service-settings/email-branding/organisation", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def email_branding_organisation(service_id):
check_branding_allowed_for_service('organisation')
check_email_branding_allowed_for_service('organisation')
if request.method == 'POST':
create_email_branding_zendesk_ticket('organisation')
@@ -1243,7 +1245,7 @@ def email_branding_organisation(service_id):
@main.route("/services/<uuid:service_id>/service-settings/email-branding/something-else", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def email_branding_something_else(service_id):
check_branding_allowed_for_service('something_else')
check_email_branding_allowed_for_service('something_else')
form = SomethingElseBrandingForm()
@@ -1256,14 +1258,14 @@ def email_branding_something_else(service_id):
return render_template(
'views/service-settings/branding/email-branding-something-else.html',
form=form,
branding_options=BrandingOptions(current_service, branding_type='email')
branding_options=ChooseBrandingForm(current_service, branding_type='email')
)
@main.route("/services/<uuid:service_id>/service-settings/letter-branding", methods=['GET', 'POST'])
@user_has_permissions('manage_service')
def letter_branding_request(service_id):
form = BrandingOptions(current_service, branding_type='letter')
form = ChooseLetterBrandingForm(current_service)
from_template = request.args.get('from_template')
branding_name = current_service.letter_branding_name
if form.validate_on_submit():
@@ -1311,7 +1313,7 @@ def data_retention(service_id):
@main.route("/services/<uuid:service_id>/data-retention/add", methods=['GET', 'POST'])
@user_is_platform_admin
def add_data_retention(service_id):
form = ServiceDataRetentionForm()
form = AdminServiceAddDataRetentionForm()
if form.validate_on_submit():
service_api_client.create_service_data_retention(service_id,
form.notification_type.data,
@@ -1327,7 +1329,7 @@ def add_data_retention(service_id):
@user_is_platform_admin
def edit_data_retention(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'])
form = AdminServiceEditDataRetentionForm(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)
return redirect(url_for('.data_retention', service_id=service_id))
@@ -1342,7 +1344,7 @@ def edit_data_retention(service_id, data_retention_id):
@main.route("/services/<uuid:service_id>/notes", methods=['GET', 'POST'])
@user_is_platform_admin
def edit_service_notes(service_id):
form = EditNotesForm(notes=current_service.notes)
form = AdminNotesForm(notes=current_service.notes)
if form.validate_on_submit():
@@ -1363,7 +1365,7 @@ def edit_service_notes(service_id):
@main.route("/services/<uuid:service_id>/edit-billing-details", methods=['GET', 'POST'])
@user_is_platform_admin
def edit_service_billing_details(service_id):
form = BillingDetailsForm(
form = AdminBillingDetailsForm(
billing_contact_email_addresses=current_service.billing_contact_email_addresses,
billing_contact_names=current_service.billing_contact_names,
billing_reference=current_service.billing_reference,