From 8be21a64f185a43a2b4bf593af1826a999405272 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Wed, 17 Nov 2021 00:17:10 +0100
Subject: [PATCH] =?UTF-8?q?E-mail=20o=20nov=C3=A9=20registraci=20upozor?=
 =?UTF-8?q?=C5=88uje=20na=20mo=C5=BEnost=20vypnout=20notifikace?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 mo/email.py    | 13 +++++++++++--
 mo/web/acct.py |  1 +
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/mo/email.py b/mo/email.py
index 51a3b8f5..27213696 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 72ee25fe..52f39592 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()
-- 
GitLab