diff --git a/mo/email.py b/mo/email.py index 812a7639b03c063d1a8dc929b94637fc1bba9f12..972918a22e5b1f6779ce5484b0460e07165f95f7 100644 --- a/mo/email.py +++ b/mo/email.py @@ -73,6 +73,13 @@ def confirm_url(type: str, token: str) -> str: return config.WEB_ROOT + f'auth/confirm/{type}?' + urllib.parse.urlencode({'token': token}, safe=':') +def contestant_list_url(contest: db.Contest, registered_only: bool) -> str: + url = config.WEB_ROOT + f'org/contest/c/{contest.contest_id}/ucastnici' + if registered_only: + url += '?participation_state=registered' + return url + + def send_new_account_email(user: db.User, token: str) -> bool: return send_user_email(user, 'Založen nový účet', textwrap.dedent('''\ Vítejte! @@ -127,8 +134,10 @@ def send_join_notify_email(dest: db.User, who: db.User, contest: db.Contest) -> place = contest.place if contest.round.enroll_mode == db.RoundEnrollMode.confirm: confirm = 'Přihlášku je potřeba potvrdit v seznamu účastníků soutěže.' + url = 'Přihlášky k potvrzení: ' + contestant_list_url(contest, True) else: confirm = 'Přihláška byla schválena automaticky.' + url = 'Seznam účastníků: ' + contestant_list_url(contest, False) return send_user_email(dest, f'Nový účastník kategorie {round.category}', textwrap.dedent(f'''\ Nový účastník se přihlásil do MO v oblasti, kterou garantujete. @@ -141,5 +150,7 @@ def send_join_notify_email(dest: db.User, who: db.User, contest: db.Contest) -> {confirm} + {url} + Váš OSMO ''')) diff --git a/mo/web/org_contest.py b/mo/web/org_contest.py index 03e23adafb19db083dac6b78e07e1773cc5ea367..9b99ac9a3e14e8826e6997ab8f12472c8cdffaf2 100644 --- a/mo/web/org_contest.py +++ b/mo/web/org_contest.py @@ -442,6 +442,7 @@ def org_contest_import(id: int): ) +# URL je explicitně uvedeno v mo.email.contestant_list_url @app.route('/org/contest/c/<int:id>/ucastnici', methods=('GET', 'POST')) @app.route('/org/contest/c/<int:id>/site/<int:site_id>/ucastnici', methods=('GET', 'POST')) @app.route('/org/contest/c/<int:id>/ucastnici/emails', endpoint="org_contest_list_emails")