Convert MAIL_DEFAULT_SENDER to a string (#1007)

Fixes #1005
This commit is contained in:
Glandos 2022-04-07 21:15:48 +02:00 committed by GitHub
parent 0dede02133
commit 5f4f69bc6c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 24 additions and 12 deletions

View file

@ -14,7 +14,7 @@ ENV DEBUG="False" \
ALLOW_PUBLIC_PROJECT_CREATION="True" \ ALLOW_PUBLIC_PROJECT_CREATION="True" \
BABEL_DEFAULT_TIMEZONE="UTC" \ BABEL_DEFAULT_TIMEZONE="UTC" \
GREENLET_TEST_CPP="no" \ GREENLET_TEST_CPP="no" \
MAIL_DEFAULT_SENDER="('Budget manager', 'admin@example.com')" \ MAIL_DEFAULT_SENDER="Budget manager <admin@example.com>" \
MAIL_PASSWORD="" \ MAIL_PASSWORD="" \
MAIL_PORT="25" \ MAIL_PORT="25" \
MAIL_SERVER="localhost" \ MAIL_SERVER="localhost" \

View file

@ -13,7 +13,7 @@ services:
- ALLOW_PUBLIC_PROJECT_CREATION=True - ALLOW_PUBLIC_PROJECT_CREATION=True
- BABEL_DEFAULT_TIMEZONE=UTC - BABEL_DEFAULT_TIMEZONE=UTC
- GREENLET_TEST_CPP=no - GREENLET_TEST_CPP=no
- MAIL_DEFAULT_SENDER=('Budget manager', 'admin@example.com') - MAIL_DEFAULT_SENDER="Budget manager <admin@example.com>"
- MAIL_PASSWORD= - MAIL_PASSWORD=
- MAIL_PORT=25 - MAIL_PORT=25
- MAIL_SERVER=localhost - MAIL_SERVER=localhost

View file

@ -76,11 +76,10 @@ for details.
## MAIL_DEFAULT_SENDER ## MAIL_DEFAULT_SENDER
A python tuple describing the name and email address to use when sending An email address to use when sending emails.
emails.
- **Default value:** `("Budget manager", "admin@example.com")` - **Default value:** `Budget manager <admin@example.com>`
- **Production value:** Any tuple you want. - **Production value:** Any valid email address.
## SHOW_ADMIN_EMAIL ## SHOW_ADMIN_EMAIL

View file

@ -19,7 +19,7 @@ SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = "{{ secret_key }}" SECRET_KEY = "{{ secret_key }}"
# A python tuple describing the name and email adress of the sender of the mails. # A python tuple describing the name and email adress of the sender of the mails.
MAIL_DEFAULT_SENDER = ("Budget manager", "admin@example.com") # CUSTOMIZE MAIL_DEFAULT_SENDER = "Budget manager <admin@example.com>" # CUSTOMIZE
# A boolean that determines whether the admin email (MAIL_DEFAULT_SENDER) is # A boolean that determines whether the admin email (MAIL_DEFAULT_SENDER) is
# shown in error messages. # shown in error messages.

View file

@ -3,7 +3,7 @@ DEBUG = SQLACHEMY_ECHO = False
SQLALCHEMY_DATABASE_URI = "sqlite:////tmp/ihatemoney.db" SQLALCHEMY_DATABASE_URI = "sqlite:////tmp/ihatemoney.db"
SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_TRACK_MODIFICATIONS = False
SECRET_KEY = "tralala" SECRET_KEY = "tralala"
MAIL_DEFAULT_SENDER = ("Budget manager", "admin@example.com") MAIL_DEFAULT_SENDER = "Budget manager <admin@example.com>"
SHOW_ADMIN_EMAIL = True SHOW_ADMIN_EMAIL = True
ACTIVATE_DEMO_PROJECT = True ACTIVATE_DEMO_PROJECT = True
ADMIN_PASSWORD = "" ADMIN_PASSWORD = ""

View file

@ -102,6 +102,16 @@ def validate_configuration(app):
if "MAIL_DEFAULT_SENDER" not in app.config: if "MAIL_DEFAULT_SENDER" not in app.config:
app.config["MAIL_DEFAULT_SENDER"] = default_settings.DEFAULT_MAIL_SENDER app.config["MAIL_DEFAULT_SENDER"] = default_settings.DEFAULT_MAIL_SENDER
if type(app.config["MAIL_DEFAULT_SENDER"]) == tuple:
(name, address) = app.config["MAIL_DEFAULT_SENDER"]
app.config["MAIL_DEFAULT_SENDER"] = f"{name} <{address}>"
warnings.warn(
"MAIL_DEFAULT_SENDER has been changed from tuple to string."
+ f" It was converted to '{app.config['MAIL_DEFAULT_SENDER']}'."
+ " Auto-conversion will be removed in future version.",
UserWarning,
)
if "pbkdf2:" not in app.config["ADMIN_PASSWORD"] and app.config["ADMIN_PASSWORD"]: if "pbkdf2:" not in app.config["ADMIN_PASSWORD"] and app.config["ADMIN_PASSWORD"]:
# Since 2.0 # Since 2.0
warnings.warn( warnings.warn(

View file

@ -6,4 +6,4 @@ SQLACHEMY_ECHO = DEBUG
SECRET_KEY = "supersecret" SECRET_KEY = "supersecret"
MAIL_DEFAULT_SENDER = ("Budget manager", "admin@example.com") MAIL_DEFAULT_SENDER = "Budget manager <admin@example.com>"

View file

@ -6,4 +6,4 @@ SQLACHEMY_ECHO = DEBUG
SECRET_KEY = "lalatra" SECRET_KEY = "lalatra"
MAIL_DEFAULT_SENDER = ("Budget manager", "admin@example.com") MAIL_DEFAULT_SENDER = "Budget manager <admin@example.com>"

View file

@ -26,7 +26,7 @@ class ConfigurationTestCase(BaseTestCase):
self.assertFalse(self.app.config["SQLALCHEMY_TRACK_MODIFICATIONS"]) self.assertFalse(self.app.config["SQLALCHEMY_TRACK_MODIFICATIONS"])
self.assertEqual( self.assertEqual(
self.app.config["MAIL_DEFAULT_SENDER"], self.app.config["MAIL_DEFAULT_SENDER"],
("Budget manager", "admin@example.com"), ("Budget manager <admin@example.com>"),
) )
self.assertTrue(self.app.config["ACTIVATE_DEMO_PROJECT"]) self.assertTrue(self.app.config["ACTIVATE_DEMO_PROJECT"])
self.assertTrue(self.app.config["ALLOW_PUBLIC_PROJECT_CREATION"]) self.assertTrue(self.app.config["ALLOW_PUBLIC_PROJECT_CREATION"])

View file

@ -1,6 +1,7 @@
import ast import ast
import csv import csv
from datetime import datetime, timedelta from datetime import datetime, timedelta
import email.utils
from enum import Enum from enum import Enum
from io import BytesIO, StringIO, TextIOWrapper from io import BytesIO, StringIO, TextIOWrapper
from json import JSONEncoder, dumps from json import JSONEncoder, dumps
@ -53,7 +54,9 @@ def flash_email_error(error_message, category="danger"):
admin email as a contact if MAIL_DEFAULT_SENDER is set to not the admin email as a contact if MAIL_DEFAULT_SENDER is set to not the
default value and SHOW_ADMIN_EMAIL is True. default value and SHOW_ADMIN_EMAIL is True.
""" """
(admin_name, admin_email) = current_app.config.get("MAIL_DEFAULT_SENDER") (admin_name, admin_email) = email.utils.parseaddr(
current_app.config.get("MAIL_DEFAULT_SENDER")
)
error_extension = "." error_extension = "."
if admin_email != "admin@example.com" and current_app.config.get( if admin_email != "admin@example.com" and current_app.config.get(
"SHOW_ADMIN_EMAIL" "SHOW_ADMIN_EMAIL"