def __proceed_group(self, group): i = 1 while len(group) > 1: if i == len(group): #в группе нет игрока с которым текущий рассматриваемый #игрок может сыграть партию return False if not PlayersInGames.check_if_played(group[0].player, group[-i].player, self.__tour.tournament_id): p1_in_t = PlayersInTournament.objects.get(player_id = group[0].player.id, tournament_id = self.__tour.tournament_id) p2_in_t = PlayersInTournament.objects.get(player_id = group[-i].player.id, tournament_id = self.__tour.tournament_id) if p1_in_t.due_color + p2_in_t.due_color in range(-3,+4): self.__create_game(group[0].player, group[-i].player, self.__get_p1_color(group[0], group[-i])) group.remove(group[0]) group.remove(group[-i]) i = 1 else: i += 1 if len(group) == 1: self.__popped_player = group.pop() return True