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=False) 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) group_stage_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) 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): return self.name 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] print(len(matches)) return map(lambda match: match.live_match(), matches) # # Convert object attributes to a dictionary # dict = self.__dict__ # # Convert dictionary to JSON # return json.dumps(dict) 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