Factorized the logo base64ification

This commit is contained in:
Éloi Rivard 2020-11-16 14:42:24 +01:00
parent f29fe7b575
commit 1795a54c0c
2 changed files with 31 additions and 11 deletions

View file

@ -1,10 +1,8 @@
import base64
import email.message
import hashlib
import pkg_resources
import logging
import smtplib
import urllib.request
from flask import (
Blueprint,
@ -25,6 +23,7 @@ from .forms import (
PasswordResetForm,
ForgottenPasswordForm,
)
from .apputils import base64logo
from .flaskutils import current_user, user_needed, moderator_needed
from .models import User
@ -227,15 +226,7 @@ def forgotten():
hash=profile_hash(user.uid[0], user.userPassword[0]),
_external=True,
)
logo = None
logo_extension = None
if current_app.config.get("LOGO"):
logo_extension = current_app.config["LOGO"].split(".")[-1]
try:
with urllib.request.urlopen(current_app.config.get("LOGO")) as f:
logo = base64.b64encode(f.read()).decode("utf-8")
except (urllib.error.HTTPError, urllib.error.URLError):
pass
logo, logo_extension = base64logo()
subject = _("Password reset on {website_name}").format(
website_name=current_app.config.get("NAME", reset_url)

29
canaille/apputils.py Normal file
View file

@ -0,0 +1,29 @@
import base64
import urllib.request
from flask import current_app, request
def base64logo():
logo_url = current_app.config.get("LOGO")
if not logo_url:
return None, None
logo_extension = logo_url.split(".")[-1]
if not logo_url.startswith("http"):
if current_app.config.get("SERVER_NAME"):
logo_url = "{}://{}/{}".format(
current_app.config.get("PREFERRED_URL_SCHEME"),
current_app.config.get("SERVER_NAME"),
logo_url,
)
else:
logo_url = "{}{}".format(request.url_root, logo_url)
try:
with urllib.request.urlopen(logo_url) as f:
logo = base64.b64encode(f.read()).decode("utf-8")
except (urllib.error.HTTPError, urllib.error.URLError):
logo = None
logo_extension = None
return logo, logo_extension