Send a mail to people in a team

This commit is contained in:
Yohann D'ANELLO 2020-05-06 00:19:38 +02:00
parent 03063599a5
commit 6b698c95cc
3 changed files with 48 additions and 36 deletions

View File

@ -165,6 +165,7 @@ class TeamDetailView(LoginRequiredMixin, DetailView):
context = super().get_context_data(**kwargs)
context["title"] = _("Information about team")
context["team_users_emails"] = [user.email for user in self.object.users]
return context

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM2\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-05-06 00:01+0200\n"
"POT-Creation-Date: 2020-05-06 00:19+0200\n"
"PO-Revision-Date: 2020-04-29 02:30+0000\n"
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
"Language-Team: fr <LL@li.org>\n"
@ -324,7 +324,8 @@ msgid "Organizers"
msgstr "Organisateurs"
#: apps/tournament/apps.py:7 apps/tournament/models.py:110
#: apps/tournament/models.py:147 templates/tournament/pool_detail.html:21
#: apps/tournament/models.py:147 apps/tournament/tables.py:57
#: apps/tournament/tables.py:91 templates/tournament/pool_detail.html:21
#: templates/tournament/team_detail.html:21
msgid "tournament"
msgstr "tournoi"
@ -563,17 +564,17 @@ msgstr "dates"
msgid "From {start:%b %d %Y} to {end:%b %d %Y}"
msgstr "Du {start: %d %b %Y} au {end:%d %b %Y}"
#: apps/tournament/tables.py:70 apps/tournament/tables.py:103
#: templates/tournament/team_detail.html:115
#: templates/tournament/team_detail.html:123
#: apps/tournament/tables.py:71 apps/tournament/tables.py:105
#: templates/tournament/team_detail.html:121
#: templates/tournament/team_detail.html:129
msgid "Download"
msgstr "Télécharger"
#: apps/tournament/tables.py:114
#: apps/tournament/tables.py:116
msgid "Problems"
msgstr "Problèmes"
#: apps/tournament/tables.py:116
#: apps/tournament/tables.py:118
msgid "Tournament"
msgstr "Tournoi"
@ -594,7 +595,7 @@ msgstr "Tournoi de {name}"
msgid "Update tournament"
msgstr "Modifier le tournoi"
#: apps/tournament/views.py:134 apps/tournament/views.py:222
#: apps/tournament/views.py:134 apps/tournament/views.py:223
#, python-brace-format
msgid "Solutions for team {team}.zip"
msgstr "Solutions pour l'équipe {team}.zip"
@ -603,45 +604,45 @@ msgstr "Solutions pour l'équipe {team}.zip"
msgid "Information about team"
msgstr "Informations sur l'équipe"
#: apps/tournament/views.py:175
#: apps/tournament/views.py:176
msgid "Update team"
msgstr "Modifier l'équipe"
#: apps/tournament/views.py:187
#: apps/tournament/views.py:188
msgid "Add organizer"
msgstr "Ajouter un organisateur"
#: apps/tournament/views.py:206 templates/base.html:108 templates/base.html:126
#: apps/tournament/views.py:207 templates/base.html:108 templates/base.html:126
#: templates/tournament/pool_detail.html:31
msgid "Solutions"
msgstr "Solutions"
#: apps/tournament/views.py:247
#: apps/tournament/views.py:248
msgid ""
"You can't publish your solution anymore. Deadline: {date:%m-%d-%Y %H:%M}."
msgstr ""
"Vous ne pouvez plus publier vos solutions. Deadline : {date:%d/%m/%Y %H:%M}."
#: apps/tournament/views.py:271
#: apps/tournament/views.py:272
msgid "All solutions"
msgstr "Toutes les solutions"
#: apps/tournament/views.py:290
#: apps/tournament/views.py:291
#, python-brace-format
msgid "Solutions for tournament {tournament}.zip"
msgstr "Solutions pour le tournoi {tournament}.zip"
#: apps/tournament/views.py:316 templates/base.html:111 templates/base.html:129
#: apps/tournament/views.py:317 templates/base.html:111 templates/base.html:129
#: templates/tournament/pool_detail.html:59
msgid "Syntheses"
msgstr "Synthèses"
#: apps/tournament/views.py:332
#: apps/tournament/views.py:333
#, python-brace-format
msgid "Syntheses for team {team}.zip"
msgstr "Notes de synthèse de l'équipe {team}.zip"
#: apps/tournament/views.py:357
#: apps/tournament/views.py:358
msgid ""
"You can't publish your synthesis anymore for the first round. Deadline: "
"{date:%m-%d-%Y %H:%M}."
@ -649,7 +650,7 @@ msgstr ""
"Vous ne pouvez plus envoyer vos notes de synthèse pour le premier tour. "
"Deadline : {date:%d/%m/%Y %h:%M}."
#: apps/tournament/views.py:363
#: apps/tournament/views.py:364
msgid ""
"You can't publish your synthesis anymore for the second round. Deadline: "
"{date:%m-%d-%Y %H:%M}."
@ -657,32 +658,32 @@ msgstr ""
"Vous ne pouvez plus envoyer vos notes de synthèse pour le second tour. "
"Deadline : {date:%d/%m/%Y %h:%M}."
#: apps/tournament/views.py:389
#: apps/tournament/views.py:390
msgid "All syntheses"
msgstr "Toutes les notes de synthèses"
#: apps/tournament/views.py:408
#: apps/tournament/views.py:409
#, python-brace-format
msgid "Syntheses for tournament {tournament}.zip"
msgstr "Notes de synthèse pour le tournoi {tournament}.zip"
#: apps/tournament/views.py:433 templates/base.html:133
#: apps/tournament/views.py:434 templates/base.html:133
msgid "Pools"
msgstr "Poules"
#: apps/tournament/views.py:449
#: apps/tournament/views.py:450
msgid "Create pool"
msgstr "Créer une poule"
#: apps/tournament/views.py:457
#: apps/tournament/views.py:458
msgid "Pool detail"
msgstr "Détails d'une poule"
#: apps/tournament/views.py:486
#: apps/tournament/views.py:487
msgid "Solutions of a pool.zip"
msgstr "Solutions d'une poule.zip"
#: apps/tournament/views.py:502
#: apps/tournament/views.py:503
msgid "Syntheses of a pool.zip"
msgstr "Notes de synthèse d'une poule.zip"
@ -829,7 +830,7 @@ msgid "class"
msgstr "classe"
#: templates/member/tfjmuser_detail.html:76
#: templates/tournament/team_detail.html:110
#: templates/tournament/team_detail.html:116
msgid "Documents"
msgstr "Documents"
@ -1033,43 +1034,47 @@ msgstr "encadrants"
msgid "participants"
msgstr "participants"
#: templates/tournament/team_detail.html:38
#: templates/tournament/team_detail.html:37
msgid "Send a mail to people in this team"
msgstr "Envoyer un mail à toutes les personnes de cette équipe"
#: templates/tournament/team_detail.html:44
msgid "Edit team"
msgstr "Modifier l'équipe"
#: templates/tournament/team_detail.html:44
#: templates/tournament/team_detail.html:50
msgid "Delete team"
msgstr "Supprimer l'équipe"
#: templates/tournament/team_detail.html:46
#: templates/tournament/team_detail.html:52
msgid "Leave this team"
msgstr "Quitter l'équipe"
#: templates/tournament/team_detail.html:87
#: templates/tournament/team_detail.html:93
msgid "The team is waiting about validation."
msgstr "L'équipe est en attente de validation"
#: templates/tournament/team_detail.html:94
#: templates/tournament/team_detail.html:100
msgid "Message addressed to the team:"
msgstr "Message adressé à l'équipe :"
#: templates/tournament/team_detail.html:95
#: templates/tournament/team_detail.html:101
msgid "Message..."
msgstr "Message ..."
#: templates/tournament/team_detail.html:100
#: templates/tournament/team_detail.html:106
msgid "Invalidate team"
msgstr "Invalider l'équipe"
#: templates/tournament/team_detail.html:101
#: templates/tournament/team_detail.html:107
msgid "Validate team"
msgstr "Valider l'équipe"
#: templates/tournament/team_detail.html:114
#: templates/tournament/team_detail.html:120
msgid "Motivation letter:"
msgstr "Lettre de motivation :"
#: templates/tournament/team_detail.html:130
#: templates/tournament/team_detail.html:136
msgid "Download solutions as ZIP"
msgstr "Télécharger les solutions en archive ZIP"

View File

@ -32,6 +32,12 @@
</dl>
</div>
{% if user.is_authenticated and user.admin %}
<div class="alert alert-info">
<a href="mailto:contact@tfjm.org?subject=TFJM²%20{{ "TFJM_YEAR"|get_env }}&bcc={{ team_users_emails|join:"," }}">{% trans "Send a mail to people in this team" %}</a><br>
</div>
{% endif %}
{% if user.admin or user in team.tournament.organizers.all or team == user.team %}
<div class="card-footer text-center">
{% if team.invalid or user.organizes %}