def _make_raw_brackets_from_divisions(self): """Returns an OrderedDict mapping bracket names (normally numbers) to lists.""" brackets = OrderedDict() teams = list(self.teams) for team in teams: # Converting from bracket's name to a float (so it can pretend to be a Bracket) division = float(team.division.name) if division in brackets: brackets[division].append(team) else: brackets[division] = [team] print "------" # Assigning bye teams as needed for bracket in brackets.itervalues(): if len(bracket) % 2 != 0: from debate.models import Institution,Team bye_tournament = bracket[0].tournament bye_institution, created = Institution.objects.get_or_create( name="Byes" ) bye_reference = "Bye %s" % bracket[0].division bye_division = bracket[0].division bye_team = Team( institution = bye_institution, reference = bye_reference, short_reference = "Bye", tournament= bye_tournament, type = "B", use_institution_prefix = False, division = bye_division, cannot_break = True ) bye_team.aff_count = 0 bye_team.neg_count = 0 bye_team.save() bracket.append(bye_team) print "\t Created a bye team for divison %s" % bracket[0].division # Assigning subranks - fixed based on alphabetical for bracket in brackets.itervalues(): bracket.sort(key=lambda x: x.short_name, reverse=False) for i, team in enumerate(bracket): i += 1 team.subrank = i return brackets