add brackets view

main
Razmig Sarkissian 2 years ago
parent 69784d937c
commit 53db1b955d
  1. 3
      scores/models.py
  2. 180
      scores/templates/scores/brackets.html
  3. 4
      scores/templates/scores/club.html
  4. 4
      scores/templates/scores/ranks.html
  5. 4
      scores/templates/scores/teams.html
  6. 47
      scores/templates/scores/tournament.html
  7. 7
      scores/urls.py
  8. 45
      scores/views.py

@ -19,6 +19,9 @@ class Tournament(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
def brackets(self):
return self.matches.filter(isBracket=True).order_by('court')
def live_matches(self): def live_matches(self):
return self.matches.filter(enddate__isnull=True).order_by('court') return self.matches.filter(enddate__isnull=True).order_by('court')

@ -0,0 +1,180 @@
<html>
{% load static %}
<head>
{% if tv %}
<script>history.scrollRestoration = "manual"</script>
<script src=
"https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js">
</script>
{% endif %}
<link rel="stylesheet" href="{% static 'scores/style.css' %}">
<title>Padel</title>
{% if not tv %}
<meta http-equiv="refresh" content="60"/>
{% endif %}
</head>
<div class="wrapper">
{% if tv %}
<script>
var iInterval = 2000;
var iScrollInterval = 10000;
var iFadeInterval = 500;
var iScroll = $(document).height() - $(window).height();
if (iScroll * 10 + 4000 < 15000) {
iScrollInterval = 10000;
} else {
iScrollInterval = iScroll * 10;
}
var fade = function() {
$("body").fadeOut(iFadeInterval, function(){
$("html, body").scrollTop(0);
$("body").fadeIn(iFadeInterval,function(){
setTimeout(loop, iInterval);
});
});
}
var loop = function() {
var iScroll = $(document).height() - $(window).height();
if (iScroll * 10 + 4000 < 15000) {
iScrollInterval = 10000;
} else {
iScrollInterval = iScroll * 10;
}
$("html, body").animate({
scrollTop: iScroll
}, {
duration : iScrollInterval,
easing : "linear",
complete : function() {
setTimeout(fade, iInterval);
}
});
setTimeout(function(){
window.location.reload();
}, Math.max(iScrollInterval * 10 + 2000, 15000));
};
setTimeout(loop, iInterval);
</script>
{% endif %}
{% if tournament.club.header %}
{% if tv %}
<header class="scenter"><a href="/tv/club/{{ tournament.club.name }}/">{{ tournament.club.header }}</a></header>
{% else %}
<header class="scenter"><a href="/club/{{ tournament.club.name }}/">{{ tournament.club.header }}</a></header>
{% endif %}
{% endif %}
<main class="page-body">
{% autoescape off %}
<div class="container">
<div class="center">
{% if tv %}
<h1><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a></h1>
{% else %}
<h1><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a></h1>
{% endif %}
<div>
{% if tv %}
<h3><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a></h3>
{% else %}
<h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a></h3>
{% endif %}
</div>
</div>
{% for match in brackets %}
{% if match.isBracket %}
<div class="match">
<div style="width: 100%;">
<div style="float: left;">
<h3>{{ match.title|default:"Match" }}</h3>
</div>
<div style="float: right;">
<h3><a href="/match/{{ match.id }}/">POULE #{{ match.poule|floatformat:0 }}</a><h3>
</div>
</div>
{% if match.team3 %}
<table>
<tr><td class="teamname">{{ match.team1|linebreaksbr }}</td>
{% if match.team1scorecolumn1 %}<td class="score">{{ match.team1scorecolumn1 }}</td>{% endif %}
{% if match.team2scorecolumn1 %}<td class="score">{{ match.team2scorecolumn1 }}</td>{% endif %}
</tr>
<tr><td class="teamname">{{ match.team2|linebreaksbr }}</td>
{% if match.team1scorecolumn2 %}<td class="score">{{ match.team1scorecolumn2 }}</td>{% endif %}
{% if match.team2scorecolumn2 %}<td class="score">{{ match.team2scorecolumn2 }}</td>{% endif %}
</tr>
<tr><td class="teamname">{{ match.team3|linebreaksbr }}</td>
{% if match.team1scorecolumn3 %}<td class="score">{{ match.team1scorecolumn3 }}</td>{% endif %}
{% if match.team2scorecolumn3 %}<td class="score">{{ match.team2scorecolumn3 }}</td>{% endif %}
</tr>
<tr><td class="teamname">{{ match.team4|linebreaksbr }}</td>
{% if match.team1scorecolumn4 %}<td class="score">{{ match.team1scorecolumn4 }}</td>{% endif %}
{% if match.team2scorecolumn4 %}<td class="score">{{ match.team2scorecolumn4 }}</td>{% endif %}
</tr>
{% if match.team5 %}
<tr><td class="teamname">{{ match.team5|linebreaksbr }}</td>
{% if match.team1scorecolumn5 %}<td class="score">{{ match.team1scorecolumn5 }}</td>{% endif %}
{% if match.team2scorecolumn5 %}<td class="score">{{ match.team2scorecolumn5 }}</td>{% endif %}
</tr>
{% endif %}
</table>
{% else %}
<table>
<tr>
<td class="teamname">{{ match.team1|linebreaksbr }}</td>
{% if match.team1scorecolumn1 %}<td class="score">{{ match.team1scorecolumn1 }}</td>{% endif %}
{% if match.team1scorecolumn2 %}<td class="score">{{ match.team1scorecolumn2 }}</td>{% endif %}
{% if match.team1scorecolumn3 %}<td class="score">{{ match.team1scorecolumn3 }}</td>{% endif %}
{% if match.team1scorecolumn4 %}<td class="score">{{ match.team1scorecolumn4 }}</td>{% endif %}
{% if match.team1scorecolumn5 %}<td class="score">{{ match.team1scorecolumn5 }}</td>{% endif %}
</tr>
<tr>
<td class="teamname">{{ match.team2|linebreaksbr }}</td>
{% if match.team2scorecolumn1 %}<td class="score">{{ match.team2scorecolumn1 }}</td>{% endif %}
{% if match.team2scorecolumn2 %}<td class="score">{{ match.team2scorecolumn2 }}</td>{% endif %}
{% if match.team2scorecolumn3 %}<td class="score">{{ match.team2scorecolumn3 }}</td>{% endif %}
{% if match.team2scorecolumn4 %}<td class="score">{{ match.team2scorecolumn4 }}</td>{% endif %}
{% if match.team2scorecolumn5 %}<td class="score">{{ match.team2scorecolumn5 }}</td>{% endif %}
</tr>
</table>
{% endif %}
<!-- <p id="demo"></p> -->
{% if not match.isStatistic %}
<p class="duration">
<div class="small"> {{ match.durationPrefix }}</div>
<div class="big">{{ match.duration }}</div>
</p>
{% endif %}
</div>
{% endif %}
{% endfor %}
</div>
{% endautoescape %}
</main>
{% if club.footer %}
<footer class="page-footer, center">{{ club.footer }}</footer>
{% endif %}
</div>
</html>

@ -23,9 +23,9 @@
<div class="sbig"> <div class="sbig">
<ul> <ul>
{% if tv %} {% if tv %}
<li><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/">{{ tournament.name }}</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a></li> <li><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/">{{ tournament.name }}</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/poules">Poules</a></li>
{% else %} {% else %}
<li><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/">{{ tournament.name }}</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a></li> <li><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/">{{ tournament.name }}</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/poules">Poules</a></li>
{% endif %} {% endif %}
</ul> </ul>
</div> </div>

@ -78,9 +78,9 @@
{% autoescape off %} {% autoescape off %}
<div class="scenter"> <div class="scenter">
{% if tv %} {% if tv %}
<h3><a href="tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a> <h3><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a></h3>
{% else %} {% else %}
<h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a> <h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a></h3>
{% endif %} {% endif %}
</div> </div>

@ -78,9 +78,9 @@
{% autoescape off %} {% autoescape off %}
<div class="scenter"> <div class="scenter">
{% if tv %} {% if tv %}
<h3><a href="tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a> <h3><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a></h3>
{% else %} {% else %}
<h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a> <h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}">{{ tournament.name }}</a></h3>
{% endif %} {% endif %}
</div> </div>

@ -66,7 +66,11 @@
{% endif %} {% endif %}
{% if tournament.club.header %} {% if tournament.club.header %}
<header class="center">{{ tournament.club.header }}</header> {% if tv %}
<header class="scenter"><a href="/tv/club/{{ tournament.club.name }}/">{{ tournament.club.header }}</a></header>
{% else %}
<header class="scenter"><a href="/club/{{ tournament.club.name }}/">{{ tournament.club.header }}</a></header>
{% endif %}
{% endif %} {% endif %}
<main class="page-body"> <main class="page-body">
@ -76,14 +80,15 @@
<div class="center"> <div class="center">
<h1>{{ tournament.name }}</h1> <h1>{{ tournament.name }}</h1>
<div> <div>
{% if tv %} {% if tv %}
<h3><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/">{{ tournament.name }}</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a><h3> <h3><a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a> | <a href="/tv/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/poules">Poules</a></h3>
{% else %} {% else %}
<h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/">{{ tournament.name }}</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a><h3> <h3><a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/classement">Classement</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/equipes">Équipes</a> | <a href="/club/{{ tournament.club.name }}/tournoi/{{ tournament.id }}/poules">Poules</a></h3>
{% endif %} {% endif %}
</div> </div>
</div> </div>
{% for match in live_matches %} {% for match in live_matches %}
{% if not match.isBracket %}
<div class="match"> <div class="match">
<div style="width: 100%;"> <div style="width: 100%;">
<div style="float: left;"> <div style="float: left;">
@ -169,16 +174,37 @@
{% endif %} {% endif %}
</div> </div>
{% endif %}
{% endfor %} {% endfor %}
{% for match in ended_matches %} {% for match in ended_matches %}
{% if not match.isBracket %}
<div class="match"> <div class="match">
<div style="width: 100%;"> <div style="width: 100%;">
<div style="float: left;"> <div style="float: left;">
<h3>{{ match.title|default:"Match" }}</h3> <h3>{{ match.title|default:"Match" }}</h3>
</div>
</div> </div>
{% if match.isMatch or match.isBracket %}
{% if match.isMatch %}
<div style="float: right;">
<h3><a href="/match/{{ match.id }}/">TERRAIN #{{ match.court }}</a><h3>
</div>
{% else %}
<div style="float: right;">
<h3><a href="/match/{{ match.id }}/">POULE #{{ match.poule|floatformat:0 }}</a><h3>
</div>
{% endif %}
{% else %}
{% if match.isStatistic %}
<div style="float: right;">
<h3><a href="/match/{{ match.id }}/">STATISTIQUES</a><h3>
</div>
{% endif %}
{% endif %}
</div>
{% if match.team3 %} {% if match.team3 %}
@ -240,6 +266,7 @@
{% endif %} {% endif %}
</div> </div>
{% endif %}
{% endfor %} {% endfor %}
</div> </div>

@ -19,6 +19,13 @@ from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path('tv/club/<str:club_name>/<str:tournament_shortname>/poules/', views.tv_brackets, name='brackets'),
path('club/<str:club_name>/<str:tournament_shortname>/poules/', views.brackets, name='brackets'),
path('tv/club/<str:club_name>/tournoi/<int:tournament_id>/poules/', views.tv_brackets_tournament_id, name='brackets'),
path('club/<str:club_name>/tournoi/<int:tournament_id>/poules/', views.brackets_tournament_id, name='brackets'),
path('tv/club/<str:club_name>/<str:tournament_shortname>/classement/', views.tv_ranking, name='ranks'), path('tv/club/<str:club_name>/<str:tournament_shortname>/classement/', views.tv_ranking, name='ranks'),
path('club/<str:club_name>/<str:tournament_shortname>/classement/', views.ranking, name='ranks'), path('club/<str:club_name>/<str:tournament_shortname>/classement/', views.ranking, name='ranks'),
path('tv/club/<str:club_name>/tournoi/<int:tournament_id>/classement/', views.tv_ranking_tournament_id, name='ranks'), path('tv/club/<str:club_name>/tournoi/<int:tournament_id>/classement/', views.tv_ranking_tournament_id, name='ranks'),

@ -223,6 +223,51 @@ def ranking(request, club_name, tournament_shortname):
} }
return HttpResponse(template.render(context, request)) return HttpResponse(template.render(context, request))
def brackets_tournament_id(request, club_name, tournament_id):
tournament = get_object_or_404(Tournament, pk=tournament_id)
template = loader.get_template('scores/brackets.html')
allBrackets = Match.objects.filter(tournament=tournament.id).order_by('court')
context = {
'tournament': tournament,
'brackets': allBrackets,
}
return HttpResponse(template.render(context, request))
def tv_brackets_tournament_id(request, club_name, tournament_id):
tournament = get_object_or_404(Tournament, pk=tournament_id)
template = loader.get_template('scores/brackets.html')
allBrackets = Match.objects.filter(tournament=tournament.id).order_by('court')
context = {
'tournament': tournament,
'brackets': allBrackets,
'tv': True,
}
return HttpResponse(template.render(context, request))
def tv_brackets(request, club_name, tournament_shortname):
club = get_object_or_404(Club, name__iexact=club_name.lower())
tournament = Tournament.objects.filter(club_id=club.id, shortname__iexact=tournament_shortname.lower()).first()
template = loader.get_template('scores/brackets.html')
allBrackets = Match.objects.filter(tournament=tournament.id).order_by('court')
context = {
'tournament': tournament,
'brackets': allBrackets,
'tv': True,
}
return HttpResponse(template.render(context, request))
def brackets(request, club_name, tournament_shortname):
club = get_object_or_404(Club, name__iexact=club_name.lower())
tournament = Tournament.objects.filter(club_id=club.id, shortname__iexact=tournament_shortname.lower()).first()
template = loader.get_template('scores/brackets.html')
allBrackets = Match.objects.filter(tournament=tournament.id).order_by('court')
context = {
'tournament': tournament,
'brackets': allBrackets,
}
return HttpResponse(template.render(context, request))
class UserViewSet(viewsets.ModelViewSet): class UserViewSet(viewsets.ModelViewSet):
""" """
API endpoint that allows users to be viewed or edited. API endpoint that allows users to be viewed or edited.

Loading…
Cancel
Save