Exemplo n.º 1
0
def start():
    data = request.json
    logger.info("Starting new game | Data: %s", data)
    try:
        # Create players
        player1_name = data['player1']['name'].lower()
        player2_name = data['player2']['name'].lower()
        player1 = Player(player1_name, WHITE)
        player2 = Player(player2_name, BLACK)

        # Caching players
        PLAYERS[player1_name] = player1
        PLAYERS[player2_name] = player2

        game = start_game(player1, player2)

        GAMES[str(game.id)] = game

        return_data = {
            "board": game.board.to_dict(),
            "id": game.id,
            "players":
                {
                    "white": player1.get_name(),
                    "black": player2.get_name(),
                },
            "next_move": game.get_next_move(),
        }
        logger.info(f"New game started | White: '{player1.get_name()}' | Black: '{player2.get_name()}' | ID: {game.id}")
        return jsonify(return_data)
    except Exception as ex:
        logger.error("Exception: %s", ex)
        return jsonify("Error %s" % ex)  # TODO: Raise HTTP error
Exemplo n.º 2
0
def add_a_player():
    # Set back tournament's data to an instance of class Tournament
    tournament = convert_to_instance()

    player_form = PlayerForm()

    if player_form.validate_on_submit():
        player = Player(player_form.first_name.data,
                        player_form.last_name.data,
                        player_form.date_of_birth.data,
                        player_form.gender.data,
                        player_form.rank.data,
                        score_of_round=0,
                        final_score_of_tournament=0)
        add_a_player_to_database(player)
        tournament.new_tournament_players(player)
        add_tournament_to_database(tournament)
        number_of_players_to_add = len(tournament.list_of_players)

        return render_template(
            'tournament_created.html',
            tournament=tournament,
            number_of_players_to_add=number_of_players_to_add)

    return render_template('add_a_player.html',
                           player_form=player_form,
                           tournament=tournament)
Exemplo n.º 3
0
def index_players(db_connection, path_to_player_file):
    cur = db_connection.cursor()
    with open(path_to_player_file, 'r') as f:
        reader = csv.DictReader(f)
        for line in reader:
            player = Player(line)
            cur.execute("INSERT INTO players VALUES (%s, %s, %s)",
                        (player.id, player.first_name, player.last_name))
    db_connection.commit()
Exemplo n.º 4
0
def deserialized_player(i):
    """ This function set back the data about players to instance to the
    class Player """
    player = Player(i['first_name'], i['last_name'], i['birthday'],
                    i['gender'], i['rank'], i['score_of_round'],
                    i['final_score_of_tournament'])
    player.scores = i["scores"]
    player.final_score = i['final_score']
    return player
Exemplo n.º 5
0
    def test_object_creating(self):
        """Test creating objects with dummy data"""
        player = Player(rank=4325,
                        name="John Doe",
                        level="Master",
                        country="UK",
                        rating=1599)
        player.save()

        self.assertEqual(player.rank, 4325)
        self.assertTrue(player.level == "Master", True)
Exemplo n.º 6
0
    def players_of_the_tournament(self):
        """This function add instance of a player to the list of tournament"""
        i = Player(first_name=PlayerForms.first_name,
                   last_name=PlayerForms.last_name,
                   birthday=PlayerForms.birth_date,
                   gender=PlayerForms.gender,
                   rank=PlayerForms.rank,
                   score_of_round=0,
                   final_score_of_tournament=0)

        self.list_of_players.append(i)
        i.scores = {self.name: {}}
        return i
Exemplo n.º 7
0
    def test_fields_validation(self):
        """Tests whether fields are actually validated"""
        player = Player(rank=2,
                        name="Magnus Carlsen",
                        level="Grandmaster",
                        country="Norway",
                        rating=2650)
        player.save()

        with self.assertRaises(mongoengine.errors.NotUniqueError):
            """Rank field must be unique"""
            player = Player(rank=2,
                            name="Magnus Carlsen",
                            level="Grandmaster",
                            country="Norway",
                            rating=2650)
            player.save()
            self.assertEqual(Player.objects.filter(rank=2).count(), 2)

        with self.assertRaises(mongoengine.errors.ValidationError):
            """The values that level field can take are limited."""
            player = Player(rank=1,
                            name="Garry Kasparov",
                            level="Grand master",
                            country="Russia",
                            rating=2700)
            player.save()
            self.assertNotEqual(player.level, "Grandmaster")

        with self.assertRaises(mongoengine.errors.ValidationError):
            """Rating field is required"""
            player = Player(rank=3,
                            name="Alex Martelli",
                            level="Master",
                            country="Brazil")
            player.save()
Exemplo n.º 8
0
    def add_player(self):
        """
        Display the add_player menu
        Loop for each information to retrieve
        Name (name), Firstname (firstname), Date of Birth (dob), Sex (_genre)
        Then create a new player and save the list.
        """
        title = "Bienvenue dans le gestionnaire de tournois d'échec.\nAjout d'un joueur"
        subtitle = "Saisir dans l'ordre :\n"

        menu = {
            1: ('', "Nom du joueur"),
            2: ('', "Prénom du joueur"),
            3: ('', "Date de naissance (Format dd/mm/aaaa)"),
            4: ('', "Sexe (H/F)")
        }

        self.view_menu.display_menu(title=title,
                                    subtitle=subtitle,
                                    question=menu)

        choice = ('name', 'first_name', 'dob', '_genre')
        response = []

        for i in range(4):
            if 0 <= i <= 1:  # pour les question nom et prénom

                valid = self.ask_and_store_text(menu[i + 1][1] + ' : ')
                while not valid[0]:
                    valid = self.ask_and_store_text(menu[i + 1][1] + ' : ')
                response.append(valid[1])

            elif i == 2:  # pour la date de naissance
                valid = self.view_menu.input(menu[i + 1][1] + ' : ')
                while not self._control_user_input("dob", valid):
                    valid = self.view_menu.input(menu[i + 1][1] + ' : ')
                response.append(valid)

            elif i == 3:  # pour la saisie du genre
                valid = self.view_menu.input(menu[i + 1][1] + ' : ')
                while not self._control_user_input("_genre", valid):
                    valid = self.view_menu.input(menu[i + 1][1] + ' : ')
                response.append(valid)

            res = dict(zip(choice, response))
        Player(**res)
        Player.save_all_players()
        self.menu_players()
Exemplo n.º 9
0
    def players_of_the_tournament(self):
        """This function add instance of a player to the list of tournament"""
        i = Player(first_name=input("first_name"),
                   last_name=input("last_name"),
                   birthday=datetime.datetime(year=int(
                            input("year")), month=int(
                            input("month")), day= int(
                            input("year"))),
                   gender=input("gender"),
                   rank=input("rank"),
                   score_of_round=0,
                   final_score_of_tournament=0)

        self.list_of_players.append(i)
        i.scores = {self.name: {}}
        return i
Exemplo n.º 10
0
 def post():
     """Adds new chess players by validating them."""
     payload = request.get_json()
     new_item = Player(**payload).save()
     return Response(new_item.to_json(), mimetype="application/json", status=201)