API - send an email when data export is successful
This commit is contained in:
parent
32f358b8cb
commit
06d4a53fbb
@ -51,3 +51,13 @@ def account_confirmation_email(user: Dict, email_data: Dict) -> None:
|
||||
recipient=user['email'],
|
||||
data=email_data,
|
||||
)
|
||||
|
||||
|
||||
@dramatiq.actor(queue_name='fittrackee_emails')
|
||||
def data_export_email(user: Dict, email_data: Dict) -> None:
|
||||
email_service.send(
|
||||
template='data_export_ready',
|
||||
lang=user['language'],
|
||||
recipient=user['email'],
|
||||
data=email_data,
|
||||
)
|
||||
|
26
fittrackee/emails/templates/data_export_ready/body.html
Normal file
26
fittrackee/emails/templates/data_export_ready/body.html
Normal file
@ -0,0 +1,26 @@
|
||||
{% extends "layout.html" %}
|
||||
{% block title %}{{ _('Your archive is ready to be downloaded') }}{% endblock %}
|
||||
{% block preheader %}{{ _('A download link is available in your account.') }}{% endblock %}
|
||||
{% block content %}<p>{{ _('You have requested an export of your account on FitTrackee.') }} {{ _('The archive is now ready to be downloaded from your account.') }}</p>
|
||||
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href="{{account_url}}" class="f-fallback button button--green" target="_blank">{{ _('Download your archive') }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>{% endblock %}
|
||||
{% block not_initiated %}{{ _("If you did not request the export, please change your password immediately or contact your administrator if your account is locked.") }}{% endblock %}
|
||||
{% block url_to_paste %}<table class="body-sub" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<p class="f-fallback sub">{{ _("If you're having trouble with the button above, copy and paste the URL below into your web browser.") }}</p>
|
||||
<p class="f-fallback sub">{{account_url}}</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>{% endblock %}
|
5
fittrackee/emails/templates/data_export_ready/body.txt
Normal file
5
fittrackee/emails/templates/data_export_ready/body.txt
Normal file
@ -0,0 +1,5 @@
|
||||
{% extends "layout.txt" %}{% block content %}{{ _('You have requested an export of your account on FitTrackee.') }}
|
||||
{{ _('The archive is now ready to be downloaded from your account.') }}
|
||||
|
||||
{{ _('Download your archive') }}: {{ account_url }}
|
||||
{{ _('If you did not request the export, please change your password immediately or contact your administrator if your account is locked.') }}{% endblock %}
|
@ -0,0 +1 @@
|
||||
FitTrackee - {{ _('Your archive is ready to be downloaded') }}
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: 2022-07-04 21:17+0000\n"
|
||||
"Last-Translator: J. Lavoie <j.lavoie@net-c.ca>\n"
|
||||
"Language: de\n"
|
||||
@ -84,6 +84,7 @@ msgstr ""
|
||||
"E-Mail bitte."
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -97,6 +98,37 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr "Verwende den unteren Link, um deine E-Mail-Adresse zu bestätigen."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: 2022-07-02 18:25+0200\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
@ -83,6 +83,7 @@ msgstr ""
|
||||
"email."
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -96,6 +97,39 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr "Use the link below to confirm your address email."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr "Your archive is ready to be downloaded"
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr "A download link is available in your account."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr "You have requested an export of your account on FitTrackee."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr "The archive is now ready to be downloaded from your account."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr "Download your archive"
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: 2022-07-04 21:17+0000\n"
|
||||
"Last-Translator: J. Lavoie <j.lavoie@net-c.ca>\n"
|
||||
"Language: fr\n"
|
||||
@ -84,6 +84,7 @@ msgstr ""
|
||||
"ignorer ce courriel."
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -97,6 +98,40 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr "Cliquez sur le lien ci-dessous pour confirmer votre adresse électronique."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr "Votre archive est prête à être téléchargée"
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr "Un lien de téléchargement est disponible dans votre compte."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr "Vous avez demandé un export des données de votre compte sur FitTrackee."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr "L'archive est maintenant prête à être téléchargée depuis votre compte."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr "Télécharger votre archive"
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
"Si vous n'êtes pas à l'origine de cette demande, veuillez changer "
|
||||
"votre mot de passe immédiatement ou contacter l'administrateur si votre "
|
||||
"compte est bloqué."
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: 2022-12-12 19:48+0000\n"
|
||||
"Last-Translator: Donato Perruso <dperruso@protonmail.com>\n"
|
||||
"Language: it\n"
|
||||
@ -84,6 +84,7 @@ msgstr ""
|
||||
"ignora quest'email."
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -97,6 +98,37 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr "Usa il link qui sotto per confermare la tua email."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: 2022-10-31 10:19+0100\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: nb\n"
|
||||
@ -79,6 +79,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -90,6 +91,37 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
Binary file not shown.
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: 2022-11-29 00:47+0000\n"
|
||||
"Last-Translator: bjornclauw <bjorn.clauw.1@gmail.com>\n"
|
||||
"Language: nl\n"
|
||||
@ -82,6 +82,7 @@ msgid ""
|
||||
msgstr "Indien u deze account niet hebt aangemaakt, gelieve deze email te negeren."
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -95,6 +96,37 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr "Gebruik de onderstaande link om uw email adres te bevestigen."
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
@ -0,0 +1,167 @@
|
||||
# flake8: noqa
|
||||
|
||||
expected_en_text_body = """Hi test,
|
||||
|
||||
You have requested an export of your account on FitTrackee.
|
||||
The archive is now ready to be downloaded from your account.
|
||||
|
||||
Download your archive: http://localhost/profile/edit/account
|
||||
If you did not request the export, please change your password immediately or contact your administrator if your account is locked.
|
||||
|
||||
Thanks,
|
||||
The FitTrackee Team
|
||||
http://localhost"""
|
||||
|
||||
expected_fr_text_body = """Bonjour test,
|
||||
|
||||
Vous avez demandé un export des données de votre compte sur FitTrackee.
|
||||
L'archive est maintenant prête à être téléchargée depuis votre compte.
|
||||
|
||||
Télécharger votre archive: http://localhost/profile/edit/account
|
||||
Si vous n'êtes pas à l'origine de cette demande, veuillez changer votre mot de passe immédiatement ou contacter l'administrateur si votre compte est bloqué.
|
||||
|
||||
Merci,
|
||||
L'équipe FitTrackee
|
||||
http://localhost"""
|
||||
|
||||
expected_en_html_body = """ <body>
|
||||
<span class="preheader">A download link is available in your account.</span>
|
||||
<table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table class="email-content" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="email-masthead">
|
||||
<a href="http://localhost" class="f-fallback email-masthead-name">
|
||||
FitTrackee
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="email-body" width="100%" cellpadding="0" cellspacing="0">
|
||||
<table class="email-body-inner" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="content-cell">
|
||||
<div class="f-fallback">
|
||||
<h1>Hi test,</h1>
|
||||
<p>You have requested an export of your account on FitTrackee. The archive is now ready to be downloaded from your account.</p>
|
||||
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href="http://localhost/profile/edit/account" class="f-fallback button button--green" target="_blank">Download your archive</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
If you did not request the export, please change your password immediately or contact your administrator if your account is locked.
|
||||
</p>
|
||||
<p>Thanks,
|
||||
<br>The FitTrackee Team</p>
|
||||
<table class="body-sub" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<p class="f-fallback sub">If you're having trouble with the button above, copy and paste the URL below into your web browser.</p>
|
||||
<p class="f-fallback sub">http://localhost/profile/edit/account</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="email-footer" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="content-cell" align="center">
|
||||
<p class="f-fallback sub align-center">© FitTrackee.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>"""
|
||||
|
||||
expected_fr_html_body = """ <body>
|
||||
<span class="preheader">Un lien de téléchargement est disponible dans votre compte.</span>
|
||||
<table class="email-wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table class="email-content" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="email-masthead">
|
||||
<a href="http://localhost" class="f-fallback email-masthead-name">
|
||||
FitTrackee
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="email-body" width="100%" cellpadding="0" cellspacing="0">
|
||||
<table class="email-body-inner" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="content-cell">
|
||||
<div class="f-fallback">
|
||||
<h1>Bonjour test,</h1>
|
||||
<p>Vous avez demandé un export des données de votre compte sur FitTrackee. L'archive est maintenant prête à être téléchargée depuis votre compte.</p>
|
||||
<table class="body-action" align="center" width="100%" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<table width="100%" border="0" cellspacing="0" cellpadding="0" role="presentation">
|
||||
<tr>
|
||||
<td align="center">
|
||||
<a href="http://localhost/profile/edit/account" class="f-fallback button button--green" target="_blank">Télécharger votre archive</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<p>
|
||||
Si vous n'êtes pas à l'origine de cette demande, veuillez changer votre mot de passe immédiatement ou contacter l'administrateur si votre compte est bloqué.
|
||||
</p>
|
||||
<p>Merci,
|
||||
<br>L'équipe FitTrackee</p>
|
||||
<table class="body-sub" role="presentation">
|
||||
<tr>
|
||||
<td>
|
||||
<p class="f-fallback sub">Si vous avez des problèmes avec le bouton, vous pouvez copier et coller le lien suivant dans votre navigateur.</p>
|
||||
<p class="f-fallback sub">http://localhost/profile/edit/account</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table class="email-footer" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
|
||||
<tr>
|
||||
<td class="content-cell" align="center">
|
||||
<p class="f-fallback sub align-center">© FitTrackee.</p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>"""
|
89
fittrackee/tests/emails/test_email_data_export_ready.py
Normal file
89
fittrackee/tests/emails/test_email_data_export_ready.py
Normal file
@ -0,0 +1,89 @@
|
||||
import pytest
|
||||
from flask import Flask
|
||||
|
||||
from fittrackee.emails.email import EmailTemplate
|
||||
|
||||
from .template_results.email_data_export_ready import (
|
||||
expected_en_html_body,
|
||||
expected_en_text_body,
|
||||
expected_fr_html_body,
|
||||
expected_fr_text_body,
|
||||
)
|
||||
|
||||
|
||||
class TestEmailTemplateForDataExport:
|
||||
EMAIL_DATA = {
|
||||
'username': 'test',
|
||||
'account_url': 'http://localhost/profile/edit/account',
|
||||
'fittrackee_url': 'http://localhost',
|
||||
}
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'lang, expected_subject',
|
||||
[
|
||||
('en', 'FitTrackee - Your archive is ready to be downloaded'),
|
||||
('fr', 'FitTrackee - Votre archive est prête à être téléchargée'),
|
||||
],
|
||||
)
|
||||
def test_it_gets_subject(
|
||||
self, app: Flask, lang: str, expected_subject: str
|
||||
) -> None:
|
||||
email_template = EmailTemplate(
|
||||
app.config['TEMPLATES_FOLDER'],
|
||||
app.config['TRANSLATIONS_FOLDER'],
|
||||
app.config['LANGUAGES'],
|
||||
)
|
||||
|
||||
subject = email_template.get_content(
|
||||
'data_export_ready', lang, 'subject.txt', {}
|
||||
)
|
||||
|
||||
assert subject == expected_subject
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'lang, expected_text_body',
|
||||
[
|
||||
('en', expected_en_text_body),
|
||||
('fr', expected_fr_text_body),
|
||||
],
|
||||
)
|
||||
def test_it_gets_text_body(
|
||||
self, app: Flask, lang: str, expected_text_body: str
|
||||
) -> None:
|
||||
email_template = EmailTemplate(
|
||||
app.config['TEMPLATES_FOLDER'],
|
||||
app.config['TRANSLATIONS_FOLDER'],
|
||||
app.config['LANGUAGES'],
|
||||
)
|
||||
|
||||
text_body = email_template.get_content(
|
||||
'data_export_ready', lang, 'body.txt', self.EMAIL_DATA
|
||||
)
|
||||
|
||||
assert text_body == expected_text_body
|
||||
|
||||
def test_it_gets_en_html_body(self, app: Flask) -> None:
|
||||
email_template = EmailTemplate(
|
||||
app.config['TEMPLATES_FOLDER'],
|
||||
app.config['TRANSLATIONS_FOLDER'],
|
||||
app.config['LANGUAGES'],
|
||||
)
|
||||
|
||||
text_body = email_template.get_content(
|
||||
'data_export_ready', 'en', 'body.html', self.EMAIL_DATA
|
||||
)
|
||||
|
||||
assert expected_en_html_body in text_body
|
||||
|
||||
def test_it_gets_fr_html_body(self, app: Flask) -> None:
|
||||
email_template = EmailTemplate(
|
||||
app.config['TEMPLATES_FOLDER'],
|
||||
app.config['TRANSLATIONS_FOLDER'],
|
||||
app.config['LANGUAGES'],
|
||||
)
|
||||
|
||||
text_body = email_template.get_content(
|
||||
'data_export_ready', 'fr', 'body.html', self.EMAIL_DATA
|
||||
)
|
||||
|
||||
assert expected_fr_html_body in text_body
|
@ -105,11 +105,6 @@ class TestEmailTemplateForEmailUpdateToCurrentEmail:
|
||||
'email_update_to_current_email', 'fr', 'body.html', self.EMAIL_DATA
|
||||
)
|
||||
|
||||
print('')
|
||||
print(expected_fr_current_email_html_body)
|
||||
print('')
|
||||
print(text_body)
|
||||
|
||||
assert expected_fr_current_email_html_body in text_body
|
||||
|
||||
|
||||
|
6
fittrackee/tests/fixtures/fixtures_emails.py
vendored
6
fittrackee/tests/fixtures/fixtures_emails.py
vendored
@ -52,3 +52,9 @@ def user_email_updated_to_new_address_mock() -> Iterator[MagicMock]:
|
||||
def account_confirmation_email_mock() -> Iterator[MagicMock]:
|
||||
with patch('fittrackee.users.auth.account_confirmation_email') as mock:
|
||||
yield mock
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def data_export_email_mock() -> Iterator[MagicMock]:
|
||||
with patch('fittrackee.users.export_data.data_export_email') as mock:
|
||||
yield mock
|
||||
|
@ -375,6 +375,7 @@ class TestExportUserData:
|
||||
self,
|
||||
generate_archive_mock: Mock,
|
||||
logger_mock: Mock,
|
||||
data_export_email_mock: Mock,
|
||||
app: Flask,
|
||||
user_1: User,
|
||||
) -> None:
|
||||
@ -414,3 +415,53 @@ class TestExportUserData:
|
||||
assert export_request.updated_at is not None
|
||||
assert export_request.file_name is None
|
||||
assert export_request.file_size is None
|
||||
|
||||
def test_it_does_not_call_data_export_email_when_export_failed(
|
||||
self,
|
||||
generate_archive_mock: Mock,
|
||||
logger_mock: Mock,
|
||||
data_export_email_mock: Mock,
|
||||
app: Flask,
|
||||
user_1: User,
|
||||
) -> None:
|
||||
export_request = UserDataExport(user_id=user_1.id)
|
||||
db.session.add(export_request)
|
||||
db.session.commit()
|
||||
generate_archive_mock.return_value = (None, None)
|
||||
|
||||
export_user_data(export_request_id=export_request.id)
|
||||
|
||||
data_export_email_mock.send.assert_not_called()
|
||||
|
||||
def test_it_calls_data_export_email_when_export_is_successful(
|
||||
self,
|
||||
generate_archive_mock: Mock,
|
||||
logger_mock: Mock,
|
||||
data_export_email_mock: Mock,
|
||||
app: Flask,
|
||||
user_1: User,
|
||||
) -> None:
|
||||
export_request = UserDataExport(user_id=user_1.id)
|
||||
db.session.add(export_request)
|
||||
db.session.commit()
|
||||
archive_name = random_string()
|
||||
generate_archive_mock.return_value = (random_string(), archive_name)
|
||||
archive_size = random_int()
|
||||
|
||||
with patch(
|
||||
'fittrackee.users.export_data.os.path.getsize',
|
||||
return_value=archive_size,
|
||||
):
|
||||
export_user_data(export_request_id=export_request.id)
|
||||
|
||||
data_export_email_mock.send.assert_called_once_with(
|
||||
{
|
||||
'language': 'en',
|
||||
'email': user_1.email,
|
||||
},
|
||||
{
|
||||
'username': user_1.username,
|
||||
'account_url': 'http://0.0.0.0:5000/profile/edit/account',
|
||||
'fittrackee_url': 'http://0.0.0.0:5000',
|
||||
},
|
||||
)
|
||||
|
@ -2,7 +2,7 @@ import datetime
|
||||
import os
|
||||
import re
|
||||
import secrets
|
||||
from typing import Dict, Optional, Tuple, Union
|
||||
from typing import Dict, Tuple, Union
|
||||
|
||||
import jwt
|
||||
from flask import (
|
||||
@ -43,6 +43,7 @@ from fittrackee.workouts.models import Sport
|
||||
from .models import BlacklistedToken, User, UserDataExport, UserSportPreference
|
||||
from .tasks import export_data
|
||||
from .utils.controls import check_password, is_valid_email, register_controls
|
||||
from .utils.language import get_language
|
||||
from .utils.token import decode_user_token
|
||||
|
||||
auth_blueprint = Blueprint('auth', __name__)
|
||||
@ -51,13 +52,6 @@ HEX_COLOR_REGEX = regex = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
|
||||
NOT_FOUND_MESSAGE = 'the requested URL was not found on the server'
|
||||
|
||||
|
||||
def get_language(language: Optional[str]) -> str:
|
||||
# Note: some users may not have language preferences set
|
||||
if not language or language not in current_app.config['LANGUAGES']:
|
||||
language = 'en'
|
||||
return language
|
||||
|
||||
|
||||
def send_account_confirmation_email(user: User) -> None:
|
||||
if current_app.config['CAN_SEND_EMAILS']:
|
||||
ui_url = current_app.config['UI_URL']
|
||||
|
@ -4,10 +4,14 @@ import secrets
|
||||
from typing import Dict, List, Optional, Tuple, Union
|
||||
from zipfile import ZipFile
|
||||
|
||||
from flask import current_app
|
||||
|
||||
from fittrackee import appLog, db
|
||||
from fittrackee.emails.tasks import data_export_email
|
||||
from fittrackee.files import get_absolute_file_path
|
||||
|
||||
from .models import User, UserDataExport
|
||||
from .utils.language import get_language
|
||||
|
||||
|
||||
class UserDataExporter:
|
||||
@ -109,3 +113,18 @@ def export_user_data(export_request_id: int) -> None:
|
||||
export_request.file_name = archive_file_name
|
||||
export_request.file_size = os.path.getsize(archive_file_path)
|
||||
db.session.commit()
|
||||
|
||||
if current_app.config['CAN_SEND_EMAILS']:
|
||||
ui_url = current_app.config['UI_URL']
|
||||
email_data = {
|
||||
'username': user.username,
|
||||
'fittrackee_url': ui_url,
|
||||
'account_url': f'{ui_url}/profile/edit/account',
|
||||
}
|
||||
user_data = {
|
||||
'language': get_language(user.language),
|
||||
'email': user.email,
|
||||
}
|
||||
data_export_email.send(user_data, email_data)
|
||||
else:
|
||||
db.session.commit()
|
||||
|
@ -24,10 +24,10 @@ from fittrackee.responses import (
|
||||
from fittrackee.utils import get_readable_duration
|
||||
from fittrackee.workouts.models import Record, Workout, WorkoutSegment
|
||||
|
||||
from .auth import get_language
|
||||
from .exceptions import InvalidEmailException, UserNotFoundException
|
||||
from .models import User, UserDataExport, UserSportPreference
|
||||
from .utils.admin import UserManagerService
|
||||
from .utils.language import get_language
|
||||
|
||||
users_blueprint = Blueprint('users', __name__)
|
||||
|
||||
|
10
fittrackee/users/utils/language.py
Normal file
10
fittrackee/users/utils/language.py
Normal file
@ -0,0 +1,10 @@
|
||||
from typing import Optional
|
||||
|
||||
from flask import current_app
|
||||
|
||||
|
||||
def get_language(language: Optional[str]) -> str:
|
||||
# Note: some users may not have language preferences set
|
||||
if not language or language not in current_app.config['LANGUAGES']:
|
||||
language = 'en'
|
||||
return language
|
40
messages.pot
40
messages.pot
@ -1,21 +1,21 @@
|
||||
# Translations template for PROJECT.
|
||||
# Copyright (C) 2022 ORGANIZATION
|
||||
# Copyright (C) 2023 ORGANIZATION
|
||||
# This file is distributed under the same license as the PROJECT project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2023.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2022-07-03 07:58+0200\n"
|
||||
"POT-Creation-Date: 2023-03-04 10:33+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.10.3\n"
|
||||
"Generated-By: Babel 2.11.0\n"
|
||||
|
||||
#: fittrackee/emails/templates/layout.html:215
|
||||
#: fittrackee/emails/templates/layout.txt:1
|
||||
@ -78,6 +78,7 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/account_confirmation/body.html:22
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:22
|
||||
#: fittrackee/emails/templates/email_update_to_new_email/body.html:22
|
||||
#: fittrackee/emails/templates/password_reset_request/body.html:24
|
||||
msgid ""
|
||||
@ -89,6 +90,37 @@ msgstr ""
|
||||
msgid "Use the link below to confirm your address email."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:2
|
||||
#: fittrackee/emails/templates/data_export_ready/subject.txt:1
|
||||
msgid "Your archive is ready to be downloaded"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:3
|
||||
msgid "A download link is available in your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:1
|
||||
msgid "You have requested an export of your account on FitTrackee."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:4
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:2
|
||||
msgid "The archive is now ready to be downloaded from your account."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:11
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:4
|
||||
msgid "Download your archive"
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/data_export_ready/body.html:18
|
||||
#: fittrackee/emails/templates/data_export_ready/body.txt:5
|
||||
msgid ""
|
||||
"If you did not request the export, please change your password "
|
||||
"immediately or contact your administrator if your account is locked."
|
||||
msgstr ""
|
||||
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/body.html:2
|
||||
#: fittrackee/emails/templates/email_update_to_current_email/subject.txt:1
|
||||
msgid "Email changed"
|
||||
|
Loading…
Reference in New Issue
Block a user