diff --git a/mo/email.py b/mo/email.py index 51a3b8f541a605c0156676d2a666b74296a38d1c..2721369692b22eaa9cfa8a94b66cfddbcd0f6ebe 100644 --- a/mo/email.py +++ b/mo/email.py @@ -12,7 +12,7 @@ import mo.config as config from mo.util import logger -def send_user_email(user: db.User, subject: str, body: str) -> bool: +def send_user_email(user: db.User, subject: str, body: str, add_footer: bool = False) -> bool: logger.info(f'Mail: "{subject}" -> {user.email}') mail_from = getattr(config, 'MAIL_FROM', None) @@ -38,6 +38,11 @@ def send_user_email(user: db.User, subject: str, body: str) -> bool: msg['Subject'] = 'OSMO – ' + subject msg['Date'] = datetime.datetime.now() + if add_footer: + body += "\n" + ("=" * 76) + "\n" + body += "Pokud nechcete tyto e-maily dostávat, vypněte si notifikace v nastavení\n" + body += f"svého účtu na {settings_url()}." + msg.set_content(body, cte='quoted-printable') mail_instead = getattr(config, 'MAIL_INSTEAD', None) @@ -80,6 +85,10 @@ def contestant_list_url(contest: db.Contest, registered_only: bool) -> str: return url +def settings_url() -> str: + return config.WEB_ROOT + 'acct/settings' + + def send_new_account_email(user: db.User, token: str) -> bool: return send_user_email(user, 'Založen nový účet', textwrap.dedent('''\ Vítejte! @@ -153,4 +162,4 @@ def send_join_notify_email(dest: db.User, who: db.User, contest: db.Contest) -> {url} Váš OSMO - ''')) + '''), add_footer=True) diff --git a/mo/web/acct.py b/mo/web/acct.py index 72ee25fe7615756ae900e03c5c7b5b45798f0148..52f39592a7f2cb1e4f4757fbe5d68ca641ff5ed8 100644 --- a/mo/web/acct.py +++ b/mo/web/acct.py @@ -112,6 +112,7 @@ class AcctSettingsForm(FlaskForm): submit = wtforms.SubmitField('Nastavit') +# URL je explicitně uvedeno v mo.email.settings_url @app.route('/acct/settings', methods=('GET', 'POST')) def user_settings(): sess = db.get_session()