Display the tournament list
This commit is contained in:
parent
e2e2c97584
commit
03144ae58e
|
@ -129,7 +129,7 @@ class Tournament(models.Model):
|
||||||
)
|
)
|
||||||
|
|
||||||
date_end = models.DateField(
|
date_end = models.DateField(
|
||||||
verbose_name=_("start"),
|
verbose_name=_("end"),
|
||||||
default=timezone.now,
|
default=timezone.now,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# Copyright (C) 2020 by Animath
|
# Copyright (C) 2020 by Animath
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
from django.utils.text import format_lazy
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
|
|
||||||
from .models import Team
|
from .models import Team, Tournament
|
||||||
|
|
||||||
|
|
||||||
# noinspection PyTypeChecker
|
# noinspection PyTypeChecker
|
||||||
|
@ -54,3 +54,16 @@ class ParticipationTable(tables.Table):
|
||||||
model = Team
|
model = Team
|
||||||
fields = ('name', 'trigram', 'problem',)
|
fields = ('name', 'trigram', 'problem',)
|
||||||
template_name = 'django_tables2/bootstrap4.html'
|
template_name = 'django_tables2/bootstrap4.html'
|
||||||
|
|
||||||
|
|
||||||
|
class TournamentTable(tables.Table):
|
||||||
|
def render_date(self, record):
|
||||||
|
return format_lazy(_("From {start} to {end}"), start=record.start, end=record.end)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
attrs = {
|
||||||
|
'class': 'table table condensed table-striped',
|
||||||
|
}
|
||||||
|
model = Tournament
|
||||||
|
fields = ('name', 'date',)
|
||||||
|
template_name = 'django_tables2/bootstrap4.html'
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% load django_tables2 i18n %}
|
||||||
|
|
||||||
|
{% block contenttitle %}
|
||||||
|
<h1>{% trans "All tournaments" %}</h1>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div id="form-content">
|
||||||
|
{% render_table table %}
|
||||||
|
{% if user.registration.is_admin %}
|
||||||
|
<a class="btn btn-block btn-success" href="#">{% trans "Add tournament" %}</a>
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
{% endblock %}
|
|
@ -6,7 +6,7 @@ from django.views.generic import TemplateView
|
||||||
|
|
||||||
from .views import CreateTeamView, JoinTeamView, \
|
from .views import CreateTeamView, JoinTeamView, \
|
||||||
MyParticipationDetailView, MyTeamDetailView, ParticipationDetailView, TeamAuthorizationsView, \
|
MyParticipationDetailView, MyTeamDetailView, ParticipationDetailView, TeamAuthorizationsView, \
|
||||||
TeamDetailView, TeamLeaveView, TeamListView, TeamUpdateView
|
TeamDetailView, TeamLeaveView, TeamListView, TeamUpdateView, TournamentListView
|
||||||
|
|
||||||
|
|
||||||
app_name = "participation"
|
app_name = "participation"
|
||||||
|
@ -22,5 +22,6 @@ urlpatterns = [
|
||||||
path("team/leave/", TeamLeaveView.as_view(), name="team_leave"),
|
path("team/leave/", TeamLeaveView.as_view(), name="team_leave"),
|
||||||
path("detail/", MyParticipationDetailView.as_view(), name="my_participation_detail"),
|
path("detail/", MyParticipationDetailView.as_view(), name="my_participation_detail"),
|
||||||
path("detail/<int:pk>/", ParticipationDetailView.as_view(), name="participation_detail"),
|
path("detail/<int:pk>/", ParticipationDetailView.as_view(), name="participation_detail"),
|
||||||
|
path("tournament/", TournamentListView.as_view(), name="tournament_list"),
|
||||||
path("chat/", TemplateView.as_view(template_name="participation/chat.html"), name="chat")
|
path("chat/", TemplateView.as_view(template_name="participation/chat.html"), name="chat")
|
||||||
]
|
]
|
||||||
|
|
|
@ -24,8 +24,8 @@ from tfjm.matrix import Matrix
|
||||||
from tfjm.views import AdminMixin
|
from tfjm.views import AdminMixin
|
||||||
|
|
||||||
from .forms import JoinTeamForm, ParticipationForm, RequestValidationForm, TeamForm, ValidateParticipationForm
|
from .forms import JoinTeamForm, ParticipationForm, RequestValidationForm, TeamForm, ValidateParticipationForm
|
||||||
from .models import Participation, Team
|
from .models import Participation, Team, Tournament
|
||||||
from .tables import TeamTable
|
from .tables import TeamTable, TournamentTable
|
||||||
|
|
||||||
|
|
||||||
class CreateTeamView(LoginRequiredMixin, CreateView):
|
class CreateTeamView(LoginRequiredMixin, CreateView):
|
||||||
|
@ -401,3 +401,8 @@ class ParticipationDetailView(LoginRequiredMixin, DetailView):
|
||||||
context["title"] = lambda: _("Participation of team {trigram}").format(trigram=self.object.team.trigram)
|
context["title"] = lambda: _("Participation of team {trigram}").format(trigram=self.object.team.trigram)
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
|
||||||
|
class TournamentListView(SingleTableView):
|
||||||
|
model = Tournament
|
||||||
|
table_class = TournamentTable
|
||||||
|
|
|
@ -63,6 +63,11 @@
|
||||||
<li class="nav-item active">
|
<li class="nav-item active">
|
||||||
<a href="{% url "index" %}" class="nav-link"><i class="fas fa-home"></i> {% trans "Home" %}</a>
|
<a href="{% url "index" %}" class="nav-link"><i class="fas fa-home"></i> {% trans "Home" %}</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item active">
|
||||||
|
<a href="#" class="nav-link" data-toggle="modal" data-target="#tournamentListModal">
|
||||||
|
<i class="fas fa-calendar-day"></i> {% trans "Tournaments" %}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
{% if user.is_authenticated and user.registration.is_admin %}
|
{% if user.is_authenticated and user.registration.is_admin %}
|
||||||
<li class="nav-item active">
|
<li class="nav-item active">
|
||||||
<a href="{% url "registration:user_list" %}" class="nav-link"><i class="fas fa-user"></i> {% trans "Users" %}</a>
|
<a href="{% url "registration:user_list" %}" class="nav-link"><i class="fas fa-user"></i> {% trans "Users" %}</a>
|
||||||
|
@ -218,6 +223,8 @@
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
{% trans "All tournaments" as modal_title %}
|
||||||
|
{% include "base_modal.html" with modal_id="tournamentList" modal_additional_class="modal-lg" %}
|
||||||
|
|
||||||
{% if user.is_authenticated %}
|
{% if user.is_authenticated %}
|
||||||
{% trans "All teams" as modal_title %}
|
{% trans "All teams" as modal_title %}
|
||||||
|
@ -247,6 +254,12 @@
|
||||||
$(".invalid-feedback").addClass("d-block");
|
$(".invalid-feedback").addClass("d-block");
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
|
$('a[data-target="#tournamentListModal"]').click(function() {
|
||||||
|
let modalBody = $("#tournamentListModal div.modal-body");
|
||||||
|
if (!modalBody.html().trim())
|
||||||
|
modalBody.load("{% url "participation:tournament_list" %} #form-content")
|
||||||
|
});
|
||||||
|
|
||||||
{% if user.is_authenticated and user.registration.is_admin %}
|
{% if user.is_authenticated and user.registration.is_admin %}
|
||||||
$('a[data-target="#teamsModal"]').click(function() {
|
$('a[data-target="#teamsModal"]').click(function() {
|
||||||
let modalBody = $("#teamsModal div.modal-body");
|
let modalBody = $("#teamsModal div.modal-body");
|
||||||
|
|
Loading…
Reference in New Issue