Limits the number of tournaments on the front page and adds links to see them all

clubs
Laurent 1 year ago
parent 32642bed02
commit 477ae7e4ab
  1. 12
      tournaments/static/tournaments/css/style.css
  2. 3
      tournaments/templates/tournaments/base.html
  3. 1
      tournaments/templates/tournaments/broadcast_base.html
  4. 23
      tournaments/templates/tournaments/tournaments.html
  5. 28
      tournaments/templates/tournaments/tournaments_list.html
  6. 1
      tournaments/urls.py
  7. 79
      tournaments/views.py

@ -25,8 +25,8 @@ body {
box-sizing: border-box;
height: 100%;
padding: 0;
margin: 0px;
/* padding: 0; */
margin: 0px 0px 100px 0px;
}
label {
@ -40,13 +40,13 @@ h1 {
line-height: 1.1;
}
header,
footer {
header {
padding: 10px;
font-size: 1.5em;
}
header {
font-size: 1.5em;
footer {
padding: 20px;
}
a {

@ -42,7 +42,6 @@
</div>
</header>
<main>
<!-- Content -->
{% block content %}
@ -50,5 +49,7 @@
{% endblock %}
</main>
<footer/>
</body>
</html>

@ -39,4 +39,5 @@
</main>
</div>
</body>
</html>

@ -10,25 +10,26 @@
<div class="grid-x">
{% if live %}
{% if live or future %}
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
{% if live %}
<label class="title">En cours</label>
{% for tournament in live %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %}
</div>
<div class="right">
<a href="{% url 'tournaments' %}?filter=1">Voir tous...</a>
</div>
{% endif %}
{% if future %}
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
<label class="title">À venir</label>
@ -36,8 +37,15 @@
{% include 'tournaments/tournament_row.html' %}
{% endfor %}
<div class="right">
<a href="{% url 'tournaments' %}?filter=0">Voir tous...</a>
</div>
{% endif %}
</div>
</div>
{% endif %}
{% if ended %}
@ -49,6 +57,11 @@
{% for tournament in ended %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %}
<div class="right">
<a href="{% url 'tournaments' %}?filter=2">Voir tous...</a>
</div>
</div>
</div>
{% endif %}

@ -0,0 +1,28 @@
{% extends 'tournaments/base.html' %}
{% block head_title %}{{ title }}{% endblock %}
{% block first_title %}Tournois{% endblock %}
{% block second_title %}{{ title }}{% endblock %}
{% block content %}
{% include 'tournaments/navigation_base.html' %}
<div class="grid-x">
{% if tournaments %}
<div class="cell medium-6 large-6 topblock my-block">
<div class="bubble">
{% for tournament in tournaments %}
{% include 'tournaments/tournament_row.html' %}
{% endfor %}
</div>
</div>
{% endif %}
</div>
{% endblock %}

@ -4,6 +4,7 @@ from . import views
urlpatterns = [
path("", views.index, name="index"),
path("tournaments/", views.tournaments, name="tournaments"),
path("clubs/", views.clubs, name="clubs"),
path("clubs/<str:club_id>/", views.club, name="club"),
path("c/<str:broadcast_code>", views.club_broadcast, name="club-broadcast"),

@ -21,51 +21,72 @@ from qr_code.qrcode.utils import QRCodeOptions
def index(request):
tomorrow = date.today() + timedelta(days=1)
club_id = request.GET.get('club')
q_base = Q(is_private=False, is_deleted=False)
future = future_tournaments(club_id)
live = live_tournaments(club_id)
finished = finished_tournaments(club_id)
q_after_tomorrow = [q_base, Q(end_date__isnull=True, start_date__gt=tomorrow)]
q_unfinished = [q_base, Q(end_date__isnull=True)]
q_ended = [q_base, Q(end_date__isnull=False)]
return render(
request,
"tournaments/tournaments.html",
{
'future': future[:10],
'live': live[:10],
'ended': finished[:10],
'club': club,
}
)
def tournaments_query(query, club_id, ascending):
queries = [query, Q(is_private=False, is_deleted=False)]
club = None
if club_id:
club = get_object_or_404(Club, pk=club_id)
q_club = Q(event__club=club)
q_after_tomorrow.append(q_club)
q_unfinished.append(q_club)
q_ended.append(q_club)
queries.append(q_club)
sortkey = 'start_date'
if not ascending:
sortkey = '-start_date'
return Tournament.objects.filter(*queries).order_by(sortkey)
def finished_tournaments(club_id):
ended_tournaments = tournaments_query(Q(end_date__isnull=False), club_id, False)
return [t for t in ended_tournaments if t.display_tournament()]
after_tomorrow_tournaments = Tournament.objects.filter(*q_after_tomorrow).order_by('start_date')
filtered_after_tomorrow_tournaments = []
for tournament in after_tomorrow_tournaments:
if tournament.display_tournament():
filtered_after_tomorrow_tournaments.append(tournament)
def live_tournaments(club_id):
tournaments = tournaments_query(Q(end_date__isnull=True), club_id, True)
return [t for t in tournaments if t.display_tournament() and t.supposedly_in_progress()]
unfinished_tournaments = Tournament.objects.filter(*q_unfinished).order_by('start_date')
def future_tournaments(club_id):
tomorrow = date.today() + timedelta(days=1)
tournaments = tournaments_query(Q(end_date__isnull=True, start_date__gt=tomorrow), club_id, True)
return [t for t in tournaments if t.display_tournament()]
live_tournaments = []
for tournament in unfinished_tournaments:
if tournament.supposedly_in_progress() and tournament.display_tournament():
live_tournaments.append(tournament)
def tournaments(request):
ended_tournaments = Tournament.objects.filter(*q_ended).order_by('-start_date')
filter = int(request.GET.get('filter'))
club_id = request.GET.get('club')
filtered_ended_tournaments = []
for tournament in ended_tournaments:
if tournament.display_tournament():
filtered_ended_tournaments.append(tournament)
title = ''
tournaments = []
if filter==0:
title = 'À venir'
tournaments = future_tournaments(club_id)
elif filter==1:
title = 'En cours'
tournaments = live_tournaments(club_id)
elif filter==2:
title = 'Terminés'
tournaments = finished_tournaments(club_id)
return render(
request,
"tournaments/tournaments.html",
"tournaments/tournaments_list.html",
{
'future': filtered_after_tomorrow_tournaments,
'live': live_tournaments,
'ended': filtered_ended_tournaments,
'tournaments': tournaments,
'title': title,
'club': club,
}
)

Loading…
Cancel
Save