Laurent 1 year ago
commit 84b1faab24
  1. 18
      tournaments/migrations/0081_round_group_stage_loser_bracket.py
  2. 14
      tournaments/models/enums.py
  3. 3
      tournaments/models/round.py
  4. 13
      tournaments/models/tournament.py
  5. 3
      tournaments/templates/tournaments/broadcast/broadcast_club.html
  6. 3
      tournaments/templates/tournaments/tournament_row.html
  7. 6
      tournaments/views.py

@ -0,0 +1,18 @@
# Generated by Django 4.2.11 on 2024-09-09 11:57
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('tournaments', '0080_alter_club_acronym'),
]
operations = [
migrations.AddField(
model_name='round',
name='group_stage_loser_bracket',
field=models.BooleanField(default=False),
),
]

@ -25,13 +25,13 @@ class FederalLevelCategory(models.IntegerChoices):
class FederalAgeCategory(models.IntegerChoices):
UNLISTED = 0, ''
A11_12 = 120, 'A11_12'
A13_14 = 140, 'A13_14'
A15_16 = 160, 'A15_16'
A17_18 = 180, 'A17_18'
SENIOR = 200, 'SENIOR'
A45 = 450, 'A45'
A55 = 550, 'A55'
A11_12 = 120, 'U12'
A13_14 = 140, 'U14'
A15_16 = 160, 'U16'
A17_18 = 180, 'U18'
SENIOR = 200, 'Senior'
A45 = 450, '+45 ans'
A55 = 550, '+55 ans'
class FederalMatchCategory(models.IntegerChoices):
TWO_SETS = 0, 'Two sets'

@ -9,6 +9,7 @@ class Round(models.Model):
parent = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE, related_name='children')
format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
start_date = models.DateTimeField(null=True, blank=True)
group_stage_loser_bracket = models.BooleanField(default=False)
def __str__(self):
if self.parent:
@ -23,6 +24,8 @@ class Round(models.Model):
def name(self):
if self.parent:
return "Matchs de classement"
elif self.group_stage_loser_bracket is True:
return "Matchs de classement de poule"
else:
if self.index == 0:
return "Finale"

@ -119,6 +119,11 @@ class Tournament(models.Model):
def category(self):
return self.get_federal_category_display()
def age(self):
if self.federal_age_category == 0:
return None
return self.get_federal_age_category_display()
def formatted_start_date(self):
return self.start_date.strftime("%d/%m/%y")
@ -542,6 +547,14 @@ class Tournament(models.Model):
matches.extend(group_stage.match_set.all())
matches = [m for m in matches if m.should_appear()]
matches.sort(key=lambda m: (m.start_date is None, m.end_date is not None, m.start_date, m.index))
group_stage_loser_bracket = list(self.round_set.filter(parent=None, group_stage_loser_bracket=True).all())
if len(group_stage_loser_bracket) > 0:
loser_matches = group_stage_loser_bracket[0].all_matches(True)
loser_matches = [m for m in loser_matches if m.should_appear()]
loser_matches.sort(key=lambda m: (m.start_date is None, m.end_date is not None, m.start_date, m.index))
matches.extend(loser_matches)
return matches
def elected_broadcast_group_stages(self):

@ -19,6 +19,9 @@
<div class="tight table-cell">
<div class="large">{{ tournament.level }}</div>
<div class="small">{{ tournament.category }}</div>
{% if tournament.age %}
<div class="small">{{ tournament.age }}</div>
{% endif %}
</div>
<div class="tight table-cell">
<span>{{ tournament.creator }}</span>

@ -3,6 +3,9 @@
<div class="tight table-cell">
<div class="large">{{ tournament.level }}</div>
<div class="small">{{ tournament.category }}</div>
{% if tournament.age %}
<div class="small">{{ tournament.age }}</div>
{% endif %}
</div>
<div class="table-cell-responsive-large table-cell-large horizontal-padding semibold">
<div><span>{{ tournament.event.club.name }}</span></div>

@ -140,7 +140,11 @@ def tournament(request, tournament_id):
group_stage_id = request.GET.get('group_stage')
match_groups = tournament.match_groups(False, group_stage_id, round_id)
rounds = tournament.round_set.filter(parent=None).order_by('-index')
bracket_rounds = tournament.round_set.filter(parent=None, group_stage_loser_bracket=False).order_by('-index')
rounds = list(tournament.round_set.filter(group_stage_loser_bracket=True))
rounds.extend(bracket_rounds)
group_stages = tournament.groupstage_set.order_by('index')
print(len(match_groups))

Loading…
Cancel
Save