1
0
mirror of https://gitlab.com/animath/si/plateforme.git synced 2025-02-13 22:21:18 +00:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Yohann D'ANELLO
1a7a411e10
Display passages as a table 2021-01-14 19:33:56 +01:00
Yohann D'ANELLO
7397afd236
Display the team ranking 2021-01-14 19:23:32 +01:00
5 changed files with 104 additions and 27 deletions

View File

@ -6,7 +6,7 @@ from django.utils.text import format_lazy
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables
from .models import Note, Pool, Team, Tournament
from .models import Note, Passage, Pool, Team, Tournament
# noinspection PyTypeChecker
@ -98,6 +98,31 @@ class PoolTable(tables.Table):
template_name = 'django_tables2/bootstrap4.html'
class PassageTable(tables.Table):
defender = tables.LinkColumn(
"participation:passage_detail",
args=[tables.A("id")],
verbose_name=_("defender").capitalize,
)
def render_defender(self, value):
return value.team
def render_opponent(self, value):
return value.team
def render_reporter(self, value):
return value.team
class Meta:
attrs = {
'class': 'table table-condensed table-striped text-center',
}
model = Passage
fields = ('defender', 'opponent', 'reporter', 'place',)
template_name = 'django_tables2/bootstrap4.html'
class NoteTable(tables.Table):
jury = tables.Column(
attrs={

View File

@ -1,6 +1,6 @@
{% extends "base.html" %}
{% load i18n %}
{% load django_tables2 i18n %}
{% block content %}
<div class="card bg-light shadow">
@ -10,7 +10,7 @@
<div class="card-body">
<dl class="row">
<dt class="col-sm-3">{% trans "Tournament:" %}</dt>
<dd class="col-sm-9">{{ pool.tournament }}</dd>
<dd class="col-sm-9"><a href="{{ pool.tournament.get_absolute_url }}">{{ pool.tournament }}</a></dd>
<dt class="col-sm-3">{% trans "Round:" %}</dt>
<dd class="col-sm-9">{{ pool.get_round_display }}</dd>
@ -25,19 +25,26 @@
<dt class="col-sm-3">{% trans "Juries:" %}</dt>
<dd class="col-sm-9">{{ pool.juries.all|join:", " }}</dd>
<dt class="col-sm-3">{% trans "Passages:" %}</dt>
<dd class="col-sm-9">
{% for passage in pool.passages.all %}
<a href="{{ passage.get_absolute_url }}" data-turbolinks="false">{{ passage }}{% if not forloop.last %}, {% endif %}</a>
{% endfor %}
</dd>
<dt class="col-sm-3">{% trans "Defended solutions:" %}</dt>
<dd class="col-sm-9">
{% for passage in pool.passages.all %}
<a href="{{ passage.defended_solution.get_absolute_url }}" data-turbolinks="false">{{ passage.defended_solution }}{% if not forloop.last %}, {% endif %}</a>
<a href="{{ passage.defended_solution.file.url }}" data-turbolinks="false">{{ passage.defended_solution }}{% if not forloop.last %}, {% endif %}</a>
{% endfor %}
</dd>
</dl>
<div class="card bg-light shadow">
<div class="card-header text-center">
<h5>{% trans "Ranking" %}</h5>
</div>
<div class="card-body">
<ul>
{% for participation, note in notes %}
<li><strong>{{ participation.team }} :</strong> {{ note }}</li>
{% endfor %}
</ul>
</div>
</div>
</div>
{% if user.registration.is_admin %}
<div class="card-footer text-center">
@ -48,6 +55,12 @@
{% endif %}
</div>
<hr>
<h3>{% trans "Passages" %}</h3>
{% render_table passages %}
{% trans "Add passage" as modal_title %}
{% trans "Add" as modal_button %}
{% url "participation:passage_create" pk=pool.pk as modal_action %}

View File

@ -72,6 +72,21 @@
<button class="btn btn-block btn-success" data-toggle="modal" data-target="#addPoolModal">{% trans "Add new pool" %}</button>
{% endif %}
<hr>
<div class="card bg-light shadow">
<div class="card-header text-center">
<h5>{% trans "Ranking" %}</h5>
</div>
<div class="card-body">
<ul>
{% for participation, note in notes %}
<li><strong>{{ participation.team }} :</strong> {{ note }}</li>
{% endfor %}
</ul>
</div>
</div>
{% trans "Add pool" as modal_title %}
{% trans "Add" as modal_button %}
{% url "participation:pool_create" as modal_action %}

View File

@ -26,7 +26,7 @@ from tfjm.views import AdminMixin
from .forms import JoinTeamForm, NoteForm, ParticipationForm, PassageForm, PoolForm, PoolTeamsForm, \
RequestValidationForm, TeamForm, TournamentForm, ValidateParticipationForm, SolutionForm, SynthesisForm
from .models import Note, Participation, Passage, Pool, Team, Tournament, Solution, Synthesis
from .tables import TeamTable, TournamentTable, ParticipationTable, PoolTable, NoteTable
from .tables import NoteTable, PassageTable, PoolTable, TeamTable, TournamentTable, ParticipationTable
class CreateTeamView(LoginRequiredMixin, CreateView):
@ -435,6 +435,13 @@ class TournamentDetailView(DetailView):
context = super().get_context_data(**kwargs)
context["teams"] = ParticipationTable(self.object.participations.all())
context["pools"] = PoolTable(self.object.pools.all())
notes = dict()
for participation in self.object.participations.all():
notes[participation] = sum(pool.average(participation)
for pool in self.object.pools.filter(participations=participation).all())
context["notes"] = sorted(notes.items(), key=lambda x: x[1], reverse=True)
return context
@ -479,6 +486,18 @@ class PoolCreateView(AdminMixin, CreateView):
class PoolDetailView(LoginRequiredMixin, DetailView):
model = Pool
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["passages"] = PassageTable(self.object.passages.all())
notes = dict()
for participation in self.object.participations.all():
notes[participation] = self.object.average(participation)
context["notes"] = sorted(notes.items(), key=lambda x: x[1], reverse=True)
return context
class PoolUpdateView(AdminMixin, UpdateView):
model = Pool

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: TFJM\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-01-14 18:57+0100\n"
"POT-Creation-Date: 2021-01-14 19:30+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Yohann D'ANELLO <yohann.danello@animath.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -293,7 +293,7 @@ msgstr "solution défendue"
msgid "Problem #{problem}"
msgstr "Problème n°{problem}"
#: apps/participation/models.py:356
#: apps/participation/models.py:356 apps/participation/tables.py:105
msgid "defender"
msgstr "défenseur"
@ -478,9 +478,9 @@ msgstr "Rejoindre"
#: apps/participation/templates/participation/passage_detail.html:44
#: apps/participation/templates/participation/passage_detail.html:100
#: apps/participation/templates/participation/passage_detail.html:105
#: apps/participation/templates/participation/pool_detail.html:45
#: apps/participation/templates/participation/pool_detail.html:57
#: apps/participation/templates/participation/pool_detail.html:62
#: apps/participation/templates/participation/pool_detail.html:52
#: apps/participation/templates/participation/pool_detail.html:68
#: apps/participation/templates/participation/pool_detail.html:73
#: apps/participation/templates/participation/team_detail.html:84
#: apps/participation/templates/participation/team_detail.html:143
#: apps/participation/templates/participation/tournament_form.html:12
@ -646,29 +646,34 @@ msgid "Juries:"
msgstr "Jurys :"
#: apps/participation/templates/participation/pool_detail.html:28
msgid "Passages:"
msgstr "Passages :"
#: apps/participation/templates/participation/pool_detail.html:34
msgid "Defended solutions:"
msgstr "Solutions défendues :"
#: apps/participation/templates/participation/pool_detail.html:44
#: apps/participation/templates/participation/pool_detail.html:38
#: apps/participation/templates/participation/tournament_detail.html:79
msgid "Ranking"
msgstr "Classement"
#: apps/participation/templates/participation/pool_detail.html:51
#: apps/participation/templates/participation/pool_detail.html:62
msgid "Add passage"
msgstr "Ajouter un passage"
#: apps/participation/templates/participation/pool_detail.html:46
#: apps/participation/templates/participation/pool_detail.html:61
#: apps/participation/templates/participation/pool_detail.html:53
#: apps/participation/templates/participation/pool_detail.html:72
msgid "Update teams"
msgstr "Modifier les équipes"
#: apps/participation/templates/participation/pool_detail.html:52
#: apps/participation/templates/participation/tournament_detail.html:76
#: apps/participation/templates/participation/pool_detail.html:60
msgid "Passages"
msgstr "Passages"
#: apps/participation/templates/participation/pool_detail.html:63
#: apps/participation/templates/participation/tournament_detail.html:91
msgid "Add"
msgstr "Ajouter"
#: apps/participation/templates/participation/pool_detail.html:56
#: apps/participation/templates/participation/pool_detail.html:67
#: apps/participation/templates/participation/pool_form.html:11
msgid "Update pool"
msgstr "Modifier la poule"
@ -850,7 +855,7 @@ msgstr "Poules"
msgid "Add new pool"
msgstr "Ajouter une nouvelle poule"
#: apps/participation/templates/participation/tournament_detail.html:75
#: apps/participation/templates/participation/tournament_detail.html:90
msgid "Add pool"
msgstr "Ajouter une poule"