Merge branch 'improvements' into 'master'

Improvements

See merge request animath/si/plateforme-corres2math!5
This commit is contained in:
Yohann D'ANELLO 2020-11-16 11:06:10 +00:00
commit d104c2ff1f
6 changed files with 162 additions and 99 deletions

View File

@ -0,0 +1,13 @@
{% extends "base.html" %}
{% load django_tables2 i18n %}
{% block contenttitle %}
<h1>{% trans "All teams" %}</h1>
{% endblock %}
{% block content %}
<div id="form-content">
{% render_table table %}
</div>
{% endblock %}

View File

@ -185,6 +185,13 @@ class TestStudentParticipation(TestCase):
)) ))
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
def test_team_list(self):
"""
Test to display the list of teams.
"""
response = self.client.get(reverse("participation:team_list"))
self.assertTrue(response.status_code, 200)
def test_no_myteam_redirect_noteam(self): def test_no_myteam_redirect_noteam(self):
""" """
Test redirection. Test redirection.

View File

@ -4,7 +4,7 @@ from django.views.generic import TemplateView
from .views import CalendarView, CreateQuestionView, CreateTeamView, DeleteQuestionView, JoinTeamView, \ from .views import CalendarView, CreateQuestionView, CreateTeamView, DeleteQuestionView, JoinTeamView, \
MyParticipationDetailView, MyTeamDetailView, ParticipationDetailView, PhaseUpdateView, \ MyParticipationDetailView, MyTeamDetailView, ParticipationDetailView, PhaseUpdateView, \
SetParticipationReceiveParticipationView, SetParticipationSendParticipationView, TeamAuthorizationsView, \ SetParticipationReceiveParticipationView, SetParticipationSendParticipationView, TeamAuthorizationsView, \
TeamDetailView, TeamLeaveView, TeamUpdateView, UpdateQuestionView, UploadVideoView TeamDetailView, TeamLeaveView, TeamListView, TeamUpdateView, UpdateQuestionView, UploadVideoView
app_name = "participation" app_name = "participation"
@ -12,6 +12,7 @@ app_name = "participation"
urlpatterns = [ urlpatterns = [
path("create_team/", CreateTeamView.as_view(), name="create_team"), path("create_team/", CreateTeamView.as_view(), name="create_team"),
path("join_team/", JoinTeamView.as_view(), name="join_team"), path("join_team/", JoinTeamView.as_view(), name="join_team"),
path("teams/", TeamListView.as_view(), name="team_list"),
path("team/", MyTeamDetailView.as_view(), name="my_team_detail"), path("team/", MyTeamDetailView.as_view(), name="my_team_detail"),
path("team/<int:pk>/", TeamDetailView.as_view(), name="team_detail"), path("team/<int:pk>/", TeamDetailView.as_view(), name="team_detail"),
path("team/<int:pk>/update/", TeamUpdateView.as_view(), name="update_team"), path("team/<int:pk>/update/", TeamUpdateView.as_view(), name="update_team"),

View File

@ -23,7 +23,7 @@ from .forms import JoinTeamForm, ParticipationForm, PhaseForm, QuestionForm, \
ReceiveParticipationForm, RequestValidationForm, SendParticipationForm, TeamForm, \ ReceiveParticipationForm, RequestValidationForm, SendParticipationForm, TeamForm, \
UploadVideoForm, ValidateParticipationForm UploadVideoForm, ValidateParticipationForm
from .models import Participation, Phase, Question, Team, Video from .models import Participation, Phase, Question, Team, Video
from .tables import CalendarTable from .tables import CalendarTable, TeamTable
class CreateTeamView(LoginRequiredMixin, CreateView): class CreateTeamView(LoginRequiredMixin, CreateView):
@ -119,6 +119,15 @@ class JoinTeamView(LoginRequiredMixin, FormView):
return reverse_lazy("participation:team_detail", args=(self.object.pk,)) return reverse_lazy("participation:team_detail", args=(self.object.pk,))
class TeamListView(AdminMixin, SingleTableView):
"""
Display the whole list of teams
"""
model = Team
table_class = TeamTable
ordering = ('participation__problem', 'trigram',)
class MyTeamDetailView(LoginRequiredMixin, RedirectView): class MyTeamDetailView(LoginRequiredMixin, RedirectView):
""" """
Redirect to the detail of the team in which the user is. Redirect to the detail of the team in which the user is.

View File

@ -70,7 +70,11 @@
<a href="#" class="nav-link" data-toggle="modal" data-target="#calendarModal"><i class="fas fa-calendar"></i> {% trans "Calendar" %}</a> <a href="#" class="nav-link" data-toggle="modal" data-target="#calendarModal"><i class="fas fa-calendar"></i> {% trans "Calendar" %}</a>
{% endif %} {% endif %}
</li> </li>
{% if user.is_authenticated and user.registration.participates %} {% if user.is_authenticated and user.registration.is_admin %}
<li class="nav-item active">
<a href="#" class="nav-link" data-toggle="modal" data-target="#teamsModal"><i class="fas fa-users"></i> {% trans "Teams" %}</a>
</li>
{% elif user.is_authenticated and user.registration.participates %}
{% if not user.registration.team %} {% if not user.registration.team %}
<li class="nav-item active"> <li class="nav-item active">
<a href="#" class="nav-link" data-toggle="modal" data-target="#createTeamModal"> <a href="#" class="nav-link" data-toggle="modal" data-target="#createTeamModal">
@ -218,21 +222,28 @@
{% trans "Calendar" as modal_title %} {% trans "Calendar" as modal_title %}
{% include "base_modal.html" with modal_id="calendar" modal_additional_class="modal-lg" %} {% include "base_modal.html" with modal_id="calendar" modal_additional_class="modal-lg" %}
{% trans "Search results" as modal_title %}
{% include "base_modal.html" with modal_id="search" modal_form_method="get" modal_additional_class="modal-lg" %}
{% trans "Log in" as modal_title %}
{% trans "Log in" as modal_button %}
{% url "login" as modal_action %}
{% include "base_modal.html" with modal_id="login" %}
{% if user.is_authenticated %} {% if user.is_authenticated %}
{% trans "All teams" as modal_title %}
{% include "base_modal.html" with modal_id="teams" modal_additional_class="modal-lg" %}
{% trans "Search results" as modal_title %}
{% include "base_modal.html" with modal_id="search" modal_form_method="get" modal_additional_class="modal-lg" %}
{% trans "Join team" as modal_title %} {% trans "Join team" as modal_title %}
{% trans "Join" as modal_button %} {% trans "Join" as modal_button %}
{% url "participation:join_team" as modal_action %} {% url "participation:join_team" as modal_action %}
{% include "base_modal.html" with modal_id="joinTeam" %} {% include "base_modal.html" with modal_id="joinTeam" %}
{% trans "Create team" as modal_title %} {% trans "Create team" as modal_title %}
{% trans "Create" as modal_button %} {% trans "Create" as modal_button %}
{% url "participation:create_team" as modal_action %} {% url "participation:create_team" as modal_action %}
{% include "base_modal.html" with modal_id="createTeam" modal_button_type="success" %} {% include "base_modal.html" with modal_id="createTeam" modal_button_type="success" %}
{% else %}
{% trans "Log in" as modal_title %}
{% trans "Log in" as modal_button %}
{% url "login" as modal_action %}
{% include "base_modal.html" with modal_id="login" %}
{% endif %} {% endif %}
<script> <script>
@ -245,16 +256,28 @@
if (!modalBody.html().trim()) if (!modalBody.html().trim())
modalBody.load("{% url "participation:calendar" %} #form-content") modalBody.load("{% url "participation:calendar" %} #form-content")
}); });
{% if user.is_authenticated and user.registration.is_admin %}
$('a[data-target="#teamsModal"]').click(function() {
let modalBody = $("#teamsModal div.modal-body");
if (!modalBody.html().trim())
modalBody.load("{% url "participation:team_list" %} #form-content")
});
$('button[data-target="#searchModal"]').click(function() { $('button[data-target="#searchModal"]').click(function() {
let modalBody = $("#searchModal div.modal-body"); let modalBody = $("#searchModal div.modal-body");
let q = encodeURI($("#search-term").val()); let q = encodeURI($("#search-term").val());
modalBody.load("{% url "haystack_search" %}?q=" + q + " #search-results"); modalBody.load("{% url "haystack_search" %}?q=" + q + " #search-results");
}); });
{% endif %}
{% if not user.is_authenticated %}
$('a[data-target="#loginModal"]').click(function() { $('a[data-target="#loginModal"]').click(function() {
let modalBody = $("#loginModal div.modal-body"); let modalBody = $("#loginModal div.modal-body");
if (!modalBody.html().trim()) if (!modalBody.html().trim())
modalBody.load("{% url "login" %} #form-content") modalBody.load("{% url "login" %} #form-content")
}); });
{% endif %}
{% if user.is_authenticated and user.registration.participates and not user.registration.team %}
$('a[data-target="#createTeamModal"]').click(function() { $('a[data-target="#createTeamModal"]').click(function() {
let modalBody = $("#createTeamModal div.modal-body"); let modalBody = $("#createTeamModal div.modal-body");
if (!modalBody.html().trim()) if (!modalBody.html().trim())
@ -265,6 +288,7 @@
if (!modalBody.html().trim()) if (!modalBody.html().trim())
modalBody.load("{% url "participation:join_team" %} #form-content"); modalBody.load("{% url "participation:join_team" %} #form-content");
}); });
{% endif %}
}); });
</script> </script>

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Corres2math\n" "Project-Id-Version: Corres2math\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-11-15 01:49+0100\n" "POT-Creation-Date: 2020-11-16 11:55+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n" "Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -99,13 +99,13 @@ msgstr "changelogs"
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}" msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}" msgstr "Changelog de type \"{action}\" pour le modèle {model} le {timestamp}"
#: apps/participation/admin.py:16 apps/participation/models.py:132 #: apps/participation/admin.py:16 apps/participation/models.py:121
#: apps/participation/tables.py:35 apps/participation/tables.py:62 #: apps/participation/tables.py:35 apps/participation/tables.py:62
msgid "problem number" msgid "problem number"
msgstr "numéro de problème" msgstr "numéro de problème"
#: apps/participation/admin.py:21 apps/participation/models.py:138 #: apps/participation/admin.py:21 apps/participation/models.py:127
#: apps/participation/models.py:192 #: apps/participation/models.py:181
msgid "valid" msgid "valid"
msgstr "valide" msgstr "valide"
@ -184,96 +184,96 @@ msgstr ""
"Donner l'autorisation de publier la vidéo sur le site principal pour " "Donner l'autorisation de publier la vidéo sur le site principal pour "
"promouvoir les Correspondances." "promouvoir les Correspondances."
#: apps/participation/models.py:107 #: apps/participation/models.py:96
#, python-brace-format #, python-brace-format
msgid "Team {name} ({trigram})" msgid "Team {name} ({trigram})"
msgstr "Équipe {name} ({trigram})" msgstr "Équipe {name} ({trigram})"
#: apps/participation/models.py:110 apps/participation/models.py:125 #: apps/participation/models.py:99 apps/participation/models.py:114
#: apps/registration/models.py:106 apps/registration/models.py:155 #: apps/registration/models.py:106 apps/registration/models.py:155
msgid "team" msgid "team"
msgstr "équipe" msgstr "équipe"
#: apps/participation/models.py:111 #: apps/participation/models.py:100
msgid "teams" msgid "teams"
msgstr "équipes" msgstr "équipes"
#: apps/participation/models.py:129 #: apps/participation/models.py:118
#, python-brace-format #, python-brace-format
msgid "Problem #{problem:d}" msgid "Problem #{problem:d}"
msgstr "Problème n°{problem:d}" msgstr "Problème n°{problem:d}"
#: apps/participation/models.py:139 apps/participation/models.py:193 #: apps/participation/models.py:128 apps/participation/models.py:182
msgid "The video got the validation of the administrators." msgid "The video got the validation of the administrators."
msgstr "La vidéo a été validée par les administrateurs." msgstr "La vidéo a été validée par les administrateurs."
#: apps/participation/models.py:148 #: apps/participation/models.py:137
msgid "solution video" msgid "solution video"
msgstr "vidéo de solution" msgstr "vidéo de solution"
#: apps/participation/models.py:157 #: apps/participation/models.py:146
msgid "received participation" msgid "received participation"
msgstr "participation reçue" msgstr "participation reçue"
#: apps/participation/models.py:166 #: apps/participation/models.py:155
msgid "synthesis video" msgid "synthesis video"
msgstr "vidéo de synthèse" msgstr "vidéo de synthèse"
#: apps/participation/models.py:173 #: apps/participation/models.py:162
#, python-brace-format #, python-brace-format
msgid "Participation of the team {name} ({trigram})" msgid "Participation of the team {name} ({trigram})"
msgstr "Participation de l'équipe {name} ({trigram})" msgstr "Participation de l'équipe {name} ({trigram})"
#: apps/participation/models.py:176 apps/participation/models.py:250 #: apps/participation/models.py:165 apps/participation/models.py:239
msgid "participation" msgid "participation"
msgstr "participation" msgstr "participation"
#: apps/participation/models.py:177 #: apps/participation/models.py:166
msgid "participations" msgid "participations"
msgstr "participations" msgstr "participations"
#: apps/participation/models.py:185 #: apps/participation/models.py:174
msgid "link" msgid "link"
msgstr "lien" msgstr "lien"
#: apps/participation/models.py:186 #: apps/participation/models.py:175
msgid "The full video link." msgid "The full video link."
msgstr "Le lien complet de la vidéo." msgstr "Le lien complet de la vidéo."
#: apps/participation/models.py:235 #: apps/participation/models.py:224
#, python-brace-format #, python-brace-format
msgid "Video of team {name} ({trigram})" msgid "Video of team {name} ({trigram})"
msgstr "Vidéo de l'équipe {name} ({trigram})" msgstr "Vidéo de l'équipe {name} ({trigram})"
#: apps/participation/models.py:239 #: apps/participation/models.py:228
msgid "video" msgid "video"
msgstr "vidéo" msgstr "vidéo"
#: apps/participation/models.py:240 #: apps/participation/models.py:229
msgid "videos" msgid "videos"
msgstr "vidéos" msgstr "vidéos"
#: apps/participation/models.py:255 #: apps/participation/models.py:244
msgid "question" msgid "question"
msgstr "question" msgstr "question"
#: apps/participation/models.py:269 #: apps/participation/models.py:258
msgid "phase number" msgid "phase number"
msgstr "phase" msgstr "phase"
#: apps/participation/models.py:274 #: apps/participation/models.py:263
msgid "phase description" msgid "phase description"
msgstr "description" msgstr "description"
#: apps/participation/models.py:278 #: apps/participation/models.py:267
msgid "start date of the given phase" msgid "start date of the given phase"
msgstr "début de la phase" msgstr "début de la phase"
#: apps/participation/models.py:283 #: apps/participation/models.py:272
msgid "end date of the given phase" msgid "end date of the given phase"
msgstr "fin de la phase" msgstr "fin de la phase"
#: apps/participation/models.py:299 #: apps/participation/models.py:290
msgid "" msgid ""
"Phase {phase_number:d} starts on {start:%Y-%m-%d %H:%M} and ends on {end:%Y-" "Phase {phase_number:d} starts on {start:%Y-%m-%d %H:%M} and ends on {end:%Y-"
"%m-%d %H:%M}" "%m-%d %H:%M}"
@ -281,21 +281,21 @@ msgstr ""
"Phase {phase_number:d} démarrant le {start:%d/%m/%Y %H:%M} et finissant le " "Phase {phase_number:d} démarrant le {start:%d/%m/%Y %H:%M} et finissant le "
"{end:%d/%m/%Y %H:%M}" "{end:%d/%m/%Y %H:%M}"
#: apps/participation/models.py:303 #: apps/participation/models.py:294
msgid "phase" msgid "phase"
msgstr "phase" msgstr "phase"
#: apps/participation/models.py:304 #: apps/participation/models.py:295
msgid "phases" msgid "phases"
msgstr "phases" msgstr "phases"
#: apps/participation/templates/participation/create_team.html:11 #: apps/participation/templates/participation/create_team.html:11
#: corres2math/templates/base.html:233 #: corres2math/templates/base.html:237
msgid "Create" msgid "Create"
msgstr "Créer" msgstr "Créer"
#: apps/participation/templates/participation/join_team.html:11 #: apps/participation/templates/participation/join_team.html:11
#: corres2math/templates/base.html:229 #: corres2math/templates/base.html:232
msgid "Join" msgid "Join"
msgstr "Rejoindre" msgstr "Rejoindre"
@ -469,7 +469,7 @@ msgstr "Définir l'équipe qui recevra votre vidéo"
#: apps/participation/templates/participation/participation_detail.html:181 #: apps/participation/templates/participation/participation_detail.html:181
#: apps/participation/templates/participation/participation_detail.html:233 #: apps/participation/templates/participation/participation_detail.html:233
#: apps/participation/views.py:490 #: apps/participation/views.py:494
msgid "Upload video" msgid "Upload video"
msgstr "Envoyer la vidéo" msgstr "Envoyer la vidéo"
@ -504,7 +504,7 @@ msgid "Update question"
msgstr "Modifier la question" msgstr "Modifier la question"
#: apps/participation/templates/participation/participation_detail.html:217 #: apps/participation/templates/participation/participation_detail.html:217
#: apps/participation/views.py:466 #: apps/participation/views.py:470
msgid "Delete question" msgid "Delete question"
msgstr "Supprimer la question" msgstr "Supprimer la question"
@ -514,8 +514,8 @@ msgid "Display synthesis"
msgstr "Afficher la synthèse" msgstr "Afficher la synthèse"
#: apps/participation/templates/participation/phase_list.html:10 #: apps/participation/templates/participation/phase_list.html:10
#: apps/participation/views.py:509 corres2math/templates/base.html:68 #: apps/participation/views.py:513 corres2math/templates/base.html:68
#: corres2math/templates/base.html:70 corres2math/templates/base.html:219 #: corres2math/templates/base.html:70 corres2math/templates/base.html:221
msgid "Calendar" msgid "Calendar"
msgstr "Calendrier" msgstr "Calendrier"
@ -627,7 +627,7 @@ msgid "Update team"
msgstr "Modifier l'équipe" msgstr "Modifier l'équipe"
#: apps/participation/templates/participation/team_detail.html:127 #: apps/participation/templates/participation/team_detail.html:127
#: apps/participation/views.py:319 #: apps/participation/views.py:323
msgid "Leave team" msgid "Leave team"
msgstr "Quitter l'équipe" msgstr "Quitter l'équipe"
@ -635,8 +635,13 @@ msgstr "Quitter l'équipe"
msgid "Are you sure that you want to leave this team?" msgid "Are you sure that you want to leave this team?"
msgstr "Êtes-vous sûr·e de vouloir quitter cette équipe ?" msgstr "Êtes-vous sûr·e de vouloir quitter cette équipe ?"
#: apps/participation/views.py:36 corres2math/templates/base.html:77 #: apps/participation/templates/participation/team_list.html:6
#: corres2math/templates/base.html:232 #: corres2math/templates/base.html:225
msgid "All teams"
msgstr "Toutes les équipes"
#: apps/participation/views.py:36 corres2math/templates/base.html:81
#: corres2math/templates/base.html:236
msgid "Create team" msgid "Create team"
msgstr "Créer une équipe" msgstr "Créer une équipe"
@ -648,36 +653,36 @@ msgstr "Vous ne participez pas, vous ne pouvez pas créer d'équipe."
msgid "You are already in a team." msgid "You are already in a team."
msgstr "Vous êtes déjà dans une équipe." msgstr "Vous êtes déjà dans une équipe."
#: apps/participation/views.py:82 corres2math/templates/base.html:82 #: apps/participation/views.py:82 corres2math/templates/base.html:86
#: corres2math/templates/base.html:228 #: corres2math/templates/base.html:231
msgid "Join team" msgid "Join team"
msgstr "Rejoindre une équipe" msgstr "Rejoindre une équipe"
#: apps/participation/views.py:133 apps/participation/views.py:325 #: apps/participation/views.py:142 apps/participation/views.py:329
#: apps/participation/views.py:358 #: apps/participation/views.py:362
msgid "You are not in a team." msgid "You are not in a team."
msgstr "Vous n'êtes pas dans une équipe." msgstr "Vous n'êtes pas dans une équipe."
#: apps/participation/views.py:134 apps/participation/views.py:359 #: apps/participation/views.py:143 apps/participation/views.py:363
msgid "You don't participate, so you don't have any team." msgid "You don't participate, so you don't have any team."
msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe." msgstr "Vous ne participez pas, vous n'avez donc pas d'équipe."
#: apps/participation/views.py:156 #: apps/participation/views.py:165
#, python-brace-format #, python-brace-format
msgid "Detail of team {trigram}" msgid "Detail of team {trigram}"
msgstr "Détails de l'équipe {trigram}" msgstr "Détails de l'équipe {trigram}"
#: apps/participation/views.py:188 #: apps/participation/views.py:197
msgid "You don't participate, so you can't request the validation of the team." msgid "You don't participate, so you can't request the validation of the team."
msgstr "" msgstr ""
"Vous ne participez pas, vous ne pouvez pas demander la validation de " "Vous ne participez pas, vous ne pouvez pas demander la validation de "
"l'équipe." "l'équipe."
#: apps/participation/views.py:191 #: apps/participation/views.py:200
msgid "The validation of the team is already done or pending." msgid "The validation of the team is already done or pending."
msgstr "La validation de l'équipe est déjà faite ou en cours." msgstr "La validation de l'équipe est déjà faite ou en cours."
#: apps/participation/views.py:194 #: apps/participation/views.py:203
msgid "" msgid ""
"The team can't be validated: missing email address confirmations, photo " "The team can't be validated: missing email address confirmations, photo "
"authorizations, people or the chosen problem is not set." "authorizations, people or the chosen problem is not set."
@ -686,51 +691,51 @@ msgstr ""
"d'adresse e-mail, soit une autorisation parentale, soit des personnes soit " "d'adresse e-mail, soit une autorisation parentale, soit des personnes soit "
"le problème n'a pas été choisi." "le problème n'a pas été choisi."
#: apps/participation/views.py:213 #: apps/participation/views.py:222
msgid "You are not an administrator." msgid "You are not an administrator."
msgstr "Vous n'êtes pas administrateur." msgstr "Vous n'êtes pas administrateur."
#: apps/participation/views.py:216 #: apps/participation/views.py:225
msgid "This team has no pending validation." msgid "This team has no pending validation."
msgstr "L'équipe n'a pas de validation en attente." msgstr "L'équipe n'a pas de validation en attente."
#: apps/participation/views.py:240 #: apps/participation/views.py:244
msgid "You must specify if you validate the registration or not." msgid "You must specify if you validate the registration or not."
msgstr "Vous devez spécifier si vous validez l'inscription ou non." msgstr "Vous devez spécifier si vous validez l'inscription ou non."
#: apps/participation/views.py:268 #: apps/participation/views.py:272
#, python-brace-format #, python-brace-format
msgid "Update team {trigram}" msgid "Update team {trigram}"
msgstr "Mise à jour de l'équipe {trigram}" msgstr "Mise à jour de l'équipe {trigram}"
#: apps/participation/views.py:305 apps/registration/views.py:253 #: apps/participation/views.py:309 apps/registration/views.py:243
#, python-brace-format #, python-brace-format
msgid "Photo authorization of {student}.{ext}" msgid "Photo authorization of {student}.{ext}"
msgstr "Autorisation de droit à l'image de {student}.{ext}" msgstr "Autorisation de droit à l'image de {student}.{ext}"
#: apps/participation/views.py:309 #: apps/participation/views.py:313
#, python-brace-format #, python-brace-format
msgid "Photo authorizations of team {trigram}.zip" msgid "Photo authorizations of team {trigram}.zip"
msgstr "Autorisations de droit à l'image de l'équipe {trigram}.zip" msgstr "Autorisations de droit à l'image de l'équipe {trigram}.zip"
#: apps/participation/views.py:327 #: apps/participation/views.py:331
msgid "The team is already validated or the validation is pending." msgid "The team is already validated or the validation is pending."
msgstr "La validation de l'équipe est déjà faite ou en cours." msgstr "La validation de l'équipe est déjà faite ou en cours."
#: apps/participation/views.py:371 #: apps/participation/views.py:375
msgid "The team is not validated yet." msgid "The team is not validated yet."
msgstr "L'équipe n'est pas encore validée." msgstr "L'équipe n'est pas encore validée."
#: apps/participation/views.py:381 #: apps/participation/views.py:385
#, python-brace-format #, python-brace-format
msgid "Participation of team {trigram}" msgid "Participation of team {trigram}"
msgstr "Participation de l'équipe {trigram}" msgstr "Participation de l'équipe {trigram}"
#: apps/participation/views.py:418 #: apps/participation/views.py:422
msgid "Create question" msgid "Create question"
msgstr "Créer une question" msgstr "Créer une question"
#: apps/participation/views.py:518 #: apps/participation/views.py:522
msgid "Calendar update" msgid "Calendar update"
msgstr "Mise à jour du calendrier" msgstr "Mise à jour du calendrier"
@ -923,8 +928,8 @@ msgid "Your password has been set. You may go ahead and log in now."
msgstr "Votre mot de passe a été changé. Vous pouvez désormais vous connecter." msgstr "Votre mot de passe a été changé. Vous pouvez désormais vous connecter."
#: apps/registration/templates/registration/password_reset_complete.html:10 #: apps/registration/templates/registration/password_reset_complete.html:10
#: corres2math/templates/base.html:132 corres2math/templates/base.html:223 #: corres2math/templates/base.html:134 corres2math/templates/base.html:241
#: corres2math/templates/base.html:224 #: corres2math/templates/base.html:242
#: corres2math/templates/registration/login.html:7 #: corres2math/templates/registration/login.html:7
#: corres2math/templates/registration/login.html:8 #: corres2math/templates/registration/login.html:8
#: corres2math/templates/registration/login.html:25 #: corres2math/templates/registration/login.html:25
@ -1161,43 +1166,47 @@ msgstr ""
msgid "Home" msgid "Home"
msgstr "Accueil" msgstr "Accueil"
#: corres2math/templates/base.html:88 #: corres2math/templates/base.html:75
msgid "Teams"
msgstr "Équipes"
#: corres2math/templates/base.html:92
msgid "My team" msgid "My team"
msgstr "Mon équipe" msgstr "Mon équipe"
#: corres2math/templates/base.html:93 #: corres2math/templates/base.html:97
msgid "My participation" msgid "My participation"
msgstr "Ma participation" msgstr "Ma participation"
#: corres2math/templates/base.html:100 #: corres2math/templates/base.html:104
msgid "Chat" msgid "Chat"
msgstr "Chat" msgstr "Chat"
#: corres2math/templates/base.html:104 #: corres2math/templates/base.html:108
msgid "Administration" msgid "Administration"
msgstr "Administration" msgstr "Administration"
#: corres2math/templates/base.html:112 #: corres2math/templates/base.html:116
msgid "Search..." msgid "Search..."
msgstr "Chercher ..." msgstr "Chercher ..."
#: corres2math/templates/base.html:121 #: corres2math/templates/base.html:125
msgid "Return to admin view" msgid "Return to admin view"
msgstr "Retourner à l'interface administrateur" msgstr "Retourner à l'interface administrateur"
#: corres2math/templates/base.html:127 #: corres2math/templates/base.html:130
msgid "Register" msgid "Register"
msgstr "S'inscrire" msgstr "S'inscrire"
#: corres2math/templates/base.html:144 #: corres2math/templates/base.html:146
msgid "My account" msgid "My account"
msgstr "Mon compte" msgstr "Mon compte"
#: corres2math/templates/base.html:147 #: corres2math/templates/base.html:149
msgid "Log out" msgid "Log out"
msgstr "Déconnexion" msgstr "Déconnexion"
#: corres2math/templates/base.html:164 #: corres2math/templates/base.html:166
#, python-format #, python-format
msgid "" msgid ""
"Your email address is not validated. Please click on the link you received " "Your email address is not validated. Please click on the link you received "
@ -1208,11 +1217,11 @@ msgstr ""
"avez reçu par mail. Vous pouvez renvoyer un mail en cliquant sur <a href=" "avez reçu par mail. Vous pouvez renvoyer un mail en cliquant sur <a href="
"\"%(send_email_url)s\">ce lien</a>." "\"%(send_email_url)s\">ce lien</a>."
#: corres2math/templates/base.html:188 #: corres2math/templates/base.html:190
msgid "Contact us" msgid "Contact us"
msgstr "Nous contacter" msgstr "Nous contacter"
#: corres2math/templates/base.html:221 #: corres2math/templates/base.html:228
msgid "Search results" msgid "Search results"
msgstr "Résultats de la recherche" msgstr "Résultats de la recherche"