2018-02-07 10:30:49 +00:00
|
|
|
from flask import current_app, redirect, render_template, session, url_for
|
|
|
|
|
|
|
|
|
|
from app import email_branding_client
|
|
|
|
|
from app.main import main
|
2022-03-03 11:40:03 +00:00
|
|
|
from app.main.forms import AdminEditEmailBrandingForm, SearchByNameForm
|
2019-01-30 09:42:15 +00:00
|
|
|
from app.s3_client.s3_logo_client import (
|
2018-02-07 10:30:49 +00:00
|
|
|
TEMP_TAG,
|
2019-01-30 10:57:35 +00:00
|
|
|
delete_email_temp_file,
|
|
|
|
|
delete_email_temp_files_created_by,
|
|
|
|
|
permanent_email_logo_name,
|
2018-02-20 11:22:17 +00:00
|
|
|
persist_logo,
|
2019-01-30 10:57:35 +00:00
|
|
|
upload_email_logo,
|
2018-02-20 11:22:17 +00:00
|
|
|
)
|
2021-06-09 13:19:05 +01:00
|
|
|
from app.utils.user import user_is_platform_admin
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
@main.route("/email-branding", methods=["GET", "POST"])
|
2018-02-27 16:45:20 +00:00
|
|
|
@user_is_platform_admin
|
2018-02-07 10:30:49 +00:00
|
|
|
def email_branding():
|
2023-08-25 09:12:23 -07:00
|
|
|
brandings = email_branding_client.get_all_email_branding(sort_key="name")
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
return render_template(
|
2023-08-25 09:12:23 -07:00
|
|
|
"views/email-branding/select-branding.html",
|
2019-01-23 14:16:44 +00:00
|
|
|
email_brandings=brandings,
|
2023-08-25 09:12:23 -07:00
|
|
|
search_form=SearchByNameForm(),
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
@main.route("/email-branding/<uuid:branding_id>/edit", methods=["GET", "POST"])
|
|
|
|
|
@main.route("/email-branding/<uuid:branding_id>/edit/<logo>", methods=["GET", "POST"])
|
2018-02-27 16:45:20 +00:00
|
|
|
@user_is_platform_admin
|
2018-02-07 10:30:49 +00:00
|
|
|
def update_email_branding(branding_id, logo=None):
|
2023-08-25 09:12:23 -07:00
|
|
|
email_branding = email_branding_client.get_email_branding(branding_id)[
|
|
|
|
|
"email_branding"
|
|
|
|
|
]
|
2018-02-07 10:30:49 +00:00
|
|
|
|
2022-03-03 11:40:03 +00:00
|
|
|
form = AdminEditEmailBrandingForm(
|
2023-08-25 09:12:23 -07:00
|
|
|
name=email_branding["name"],
|
|
|
|
|
text=email_branding["text"],
|
|
|
|
|
colour=email_branding["colour"],
|
|
|
|
|
brand_type=email_branding["brand_type"],
|
2018-08-23 14:21:41 +01:00
|
|
|
)
|
2018-02-07 10:30:49 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
logo = logo if logo else email_branding.get("logo") if email_branding else None
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
if form.validate_on_submit():
|
|
|
|
|
if form.file.data:
|
2019-01-30 10:57:35 +00:00
|
|
|
upload_filename = upload_email_logo(
|
2023-08-25 09:12:23 -07:00
|
|
|
form.file.data.filename, form.file.data, user_id=session["user_id"]
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|
|
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
if logo and logo.startswith(TEMP_TAG.format(user_id=session["user_id"])):
|
2019-01-30 10:57:35 +00:00
|
|
|
delete_email_temp_file(logo)
|
2018-02-07 10:30:49 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
return redirect(
|
|
|
|
|
url_for(
|
|
|
|
|
".update_email_branding",
|
|
|
|
|
branding_id=branding_id,
|
|
|
|
|
logo=upload_filename,
|
|
|
|
|
)
|
|
|
|
|
)
|
2018-02-07 10:30:49 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
updated_logo_name = (
|
|
|
|
|
permanent_email_logo_name(logo, session["user_id"]) if logo else None
|
|
|
|
|
)
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
email_branding_client.update_email_branding(
|
|
|
|
|
branding_id=branding_id,
|
2019-01-25 12:07:04 +00:00
|
|
|
logo=updated_logo_name,
|
2018-02-07 10:30:49 +00:00
|
|
|
name=form.name.data,
|
2018-08-09 16:24:22 +01:00
|
|
|
text=form.text.data,
|
2018-08-20 13:27:17 +01:00
|
|
|
colour=form.colour.data,
|
2018-08-23 14:21:41 +01:00
|
|
|
brand_type=form.brand_type.data,
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|
|
|
|
|
|
2019-01-25 12:07:04 +00:00
|
|
|
if logo:
|
|
|
|
|
persist_logo(logo, updated_logo_name)
|
|
|
|
|
|
2019-01-30 10:57:35 +00:00
|
|
|
delete_email_temp_files_created_by(session["user_id"])
|
2019-01-25 12:07:04 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
return redirect(url_for(".email_branding", branding_id=branding_id))
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
return render_template(
|
2023-08-25 09:12:23 -07:00
|
|
|
"views/email-branding/manage-branding.html",
|
2018-02-07 10:30:49 +00:00
|
|
|
form=form,
|
|
|
|
|
email_branding=email_branding,
|
2023-08-25 09:12:23 -07:00
|
|
|
cdn_url=current_app.config["LOGO_CDN_DOMAIN"],
|
|
|
|
|
logo=logo,
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
@main.route("/email-branding/create", methods=["GET", "POST"])
|
|
|
|
|
@main.route("/email-branding/create/<logo>", methods=["GET", "POST"])
|
2018-02-27 16:45:20 +00:00
|
|
|
@user_is_platform_admin
|
2018-02-07 10:30:49 +00:00
|
|
|
def create_email_branding(logo=None):
|
2023-08-25 09:12:23 -07:00
|
|
|
form = AdminEditEmailBrandingForm(brand_type="org")
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
if form.validate_on_submit():
|
|
|
|
|
if form.file.data:
|
2019-01-30 10:57:35 +00:00
|
|
|
upload_filename = upload_email_logo(
|
2023-08-25 09:12:23 -07:00
|
|
|
form.file.data.filename, form.file.data, user_id=session["user_id"]
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|
|
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
if logo and logo.startswith(TEMP_TAG.format(user_id=session["user_id"])):
|
2019-01-30 10:57:35 +00:00
|
|
|
delete_email_temp_file(logo)
|
2018-02-07 10:30:49 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
return redirect(url_for(".create_email_branding", logo=upload_filename))
|
2018-02-07 10:30:49 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
updated_logo_name = (
|
|
|
|
|
permanent_email_logo_name(logo, session["user_id"]) if logo else None
|
|
|
|
|
)
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
email_branding_client.create_email_branding(
|
2019-01-25 12:07:04 +00:00
|
|
|
logo=updated_logo_name,
|
2018-02-07 10:30:49 +00:00
|
|
|
name=form.name.data,
|
2018-08-09 15:50:07 +01:00
|
|
|
text=form.text.data,
|
2018-08-20 13:27:17 +01:00
|
|
|
colour=form.colour.data,
|
2018-08-23 14:21:41 +01:00
|
|
|
brand_type=form.brand_type.data,
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|
|
|
|
|
|
2019-01-25 12:07:04 +00:00
|
|
|
if logo:
|
|
|
|
|
persist_logo(logo, updated_logo_name)
|
|
|
|
|
|
2019-01-30 10:57:35 +00:00
|
|
|
delete_email_temp_files_created_by(session["user_id"])
|
2019-01-25 12:07:04 +00:00
|
|
|
|
2023-08-25 09:12:23 -07:00
|
|
|
return redirect(url_for(".email_branding"))
|
2018-02-07 10:30:49 +00:00
|
|
|
|
|
|
|
|
return render_template(
|
2023-08-25 09:12:23 -07:00
|
|
|
"views/email-branding/manage-branding.html",
|
2018-02-07 10:30:49 +00:00
|
|
|
form=form,
|
2023-08-25 09:12:23 -07:00
|
|
|
cdn_url=current_app.config["LOGO_CDN_DOMAIN"],
|
|
|
|
|
logo=logo,
|
2018-02-07 10:30:49 +00:00
|
|
|
)
|