You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
92 lines
4.2 KiB
92 lines
4.2 KiB
from django.db import models
|
|
from . import Event, CustomUser, FederalMatchCategory, FederalCategory, FederalLevelCategory, FederalAgeCategory
|
|
import uuid
|
|
|
|
class Tournament(models.Model):
|
|
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True)
|
|
event = models.ForeignKey(Event, blank=True, null=True, on_delete=models.CASCADE)
|
|
creator = models.ForeignKey(CustomUser, blank=True, null=True, on_delete=models.CASCADE)
|
|
name = models.CharField(max_length=200, null=True, blank=True)
|
|
start_date = models.DateTimeField()
|
|
end_date = models.DateTimeField(null=True, blank=True)
|
|
creation_date = models.DateTimeField()
|
|
is_private = models.BooleanField()
|
|
# format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
|
|
round_format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
|
|
group_stage_format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
|
|
loser_round_format = models.IntegerField(default=FederalMatchCategory.NINE_GAMES, choices=FederalMatchCategory.choices, null=True, blank=True)
|
|
bracket_sort_mode = models.IntegerField(default=0)
|
|
group_stage_count = models.IntegerField(default=0)
|
|
rank_source_date = models.DateTimeField(null=True, blank=True)
|
|
# custom_name = models.CharField(max_length=100, null=True, blank=True)
|
|
day_duration = models.IntegerField(default=0)
|
|
team_count = models.IntegerField(default=0)
|
|
team_sorting = models.IntegerField(default=0)
|
|
federal_category = models.IntegerField(default=FederalCategory.MEN, choices=FederalCategory.choices) # optional ?
|
|
federal_level_category = models.IntegerField(default=FederalLevelCategory.P100, choices=FederalLevelCategory.choices)
|
|
federal_age_category = models.IntegerField(default=FederalAgeCategory.SENIOR, choices=FederalAgeCategory.choices)
|
|
group_stage_court_count = models.IntegerField(null=True, blank=True)
|
|
seed_count = models.IntegerField(default=0)
|
|
closed_registration_date = models.DateTimeField(null=True, blank=True)
|
|
group_stage_additional_qualified = models.IntegerField(default=0)
|
|
court_count = models.IntegerField(null=True, blank=True)
|
|
prioritize_club_members = models.BooleanField()
|
|
qualified_per_group_stage = models.IntegerField(default=0)
|
|
teams_per_group_stage = models.IntegerField(default=0)
|
|
#estimated_end_date = models.DateTimeField(null=True, blank=True)
|
|
|
|
def __str__(self):
|
|
if self.name:
|
|
return self.name
|
|
elif self.event:
|
|
return self.event.display_name()
|
|
else:
|
|
return '--'
|
|
|
|
def level(self):
|
|
return self.get_federal_level_category_display()
|
|
|
|
def category(self):
|
|
return self.get_federal_category_display()
|
|
|
|
def formatted_start_date(self):
|
|
return self.start_date.strftime("%d/%m/%y")
|
|
|
|
def team_summons(self):
|
|
|
|
summons = []
|
|
for team_registration in self.teamregistration_set.all():
|
|
call_date = team_registration.call_date
|
|
if call_date:
|
|
names = team_registration.team_names()
|
|
stage = team_registration.next_stage()
|
|
weight = team_registration.weight()
|
|
summon = TeamSummon(names, call_date, weight, stage, team_registration.logo)
|
|
summons.append(summon)
|
|
|
|
return summons
|
|
|
|
def live_matches(self):
|
|
matches = []
|
|
for group_stage in self.groupstage_set.all():
|
|
for match in group_stage.match_set.all():
|
|
matches.append(match)
|
|
for round in self.round_set.all():
|
|
for match in round.match_set.all():
|
|
matches.append(match)
|
|
|
|
# matches = [m for m in matches if m.broadcasted==True]
|
|
|
|
return map(lambda match: match.live_match(), matches)
|
|
|
|
def live_group_stages(self):
|
|
return map(lambda gs: gs.live_group_stage(), self.groupstage_set.all())
|
|
|
|
class TeamSummon:
|
|
def __init__(self, names, date, weight, stage, image):
|
|
self.names = []
|
|
self.names = names
|
|
self.date = date
|
|
self.weight = weight
|
|
self.stage = stage
|
|
self.image = image
|
|
|