fix teams sorting in edge cases

online_registration
Raz 1 year ago
parent 9c9875db67
commit 65e1e6b9b5
  1. 8
      tournaments/models/tournament.py

@ -326,7 +326,7 @@ class Tournament(models.Model):
# print(f"Waiting teams: {len(waiting_teams)}") # print(f"Waiting teams: {len(waiting_teams)}")
if len(teams) < self.team_count: if len(teams) < self.team_count:
teams.sort(key=lambda s: (s.initial_weight, s.date, s.team_registration.id)) teams.sort(key=lambda s: (s.initial_weight, s.team_registration.id))
return teams return teams
seeds_count = min(self.team_count, len(teams)) - self.group_stage_count * self.teams_per_group_stage - len(wildcard_bracket) seeds_count = min(self.team_count, len(teams)) - self.group_stage_count * self.teams_per_group_stage - len(wildcard_bracket)
@ -341,7 +341,7 @@ class Tournament(models.Model):
if self.team_sorting == TeamSortingType.INSCRIPTION_DATE: if self.team_sorting == TeamSortingType.INSCRIPTION_DATE:
complete_teams.sort(key=lambda s: (s.date is None, s.date or datetime.min, s.initial_weight, s.team_registration.id)) complete_teams.sort(key=lambda s: (s.date is None, s.date or datetime.min, s.initial_weight, s.team_registration.id))
else: else:
complete_teams.sort(key=lambda s: (s.initial_weight, s.date is None, s.date or datetime.min, s.team_registration.id)) complete_teams.sort(key=lambda s: (s.initial_weight, s.team_registration.id))
selected_teams = complete_teams[:self.team_count] selected_teams = complete_teams[:self.team_count]
selected_teams.sort(key=lambda s: (s.initial_weight, s.team_registration.id)) selected_teams.sort(key=lambda s: (s.initial_weight, s.team_registration.id))
@ -368,9 +368,9 @@ class Tournament(models.Model):
if waiting_list_count > 0: if waiting_list_count > 0:
waiting_teams = waiting_teams + complete_teams[-waiting_list_count:] waiting_teams = waiting_teams + complete_teams[-waiting_list_count:]
if self.team_sorting == TeamSortingType.INSCRIPTION_DATE: if self.team_sorting == TeamSortingType.INSCRIPTION_DATE:
waiting_teams.sort(key=lambda s: (s.date, s.initial_weight, s.team_registration.id)) waiting_teams.sort(key=lambda s: (s.date is None, s.date or datetime.min, s.initial_weight, s.team_registration.id))
else: else:
waiting_teams.sort(key=lambda s: (s.initial_weight, s.date, s.team_registration.id)) waiting_teams.sort(key=lambda s: (s.initial_weight, s.team_registration.id))
else: else:
waiting_teams = [] waiting_teams = []
# print(f"Final waiting teams: {len(waiting_teams)}") # print(f"Final waiting teams: {len(waiting_teams)}")

Loading…
Cancel
Save