groupstage loser bracket

tz
Razmig Sarkissian 1 year ago
parent e89350a747
commit d39ccb5a69
  1. 18
      tournaments/migrations/0081_round_group_stage_loser_bracket.py
  2. 3
      tournaments/models/round.py
  3. 8
      tournaments/models/tournament.py
  4. 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),
),
]

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

@ -542,6 +542,14 @@ class Tournament(models.Model):
matches.extend(group_stage.match_set.all()) matches.extend(group_stage.match_set.all())
matches = [m for m in matches if m.should_appear()] 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)) 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 return matches
def elected_broadcast_group_stages(self): def elected_broadcast_group_stages(self):

@ -136,7 +136,11 @@ def tournament(request, tournament_id):
group_stage_id = request.GET.get('group_stage') group_stage_id = request.GET.get('group_stage')
match_groups = tournament.match_groups(False, group_stage_id, round_id) 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') group_stages = tournament.groupstage_set.order_by('index')
print(len(match_groups)) print(len(match_groups))

Loading…
Cancel
Save