Exemple #1
0
def add_player():
    error = None
    if request.method == 'POST':
        insert_data = dict(request.form)
        insert_data['is_active'] = 'is_active' in insert_data.keys()
        try:
            player_id = Player.execute_insert([insert_data])[0]
            flash('Гравець створений', 'isa_success')
            return redirect(url_for('.player_info', player_id=player_id))
        except mysql.connector.Error as err:
            flash(err.msg)

    cities = City.select_attrs(['id', 'name'])
    ranks = Rank.select_attrs(['id', 'name'])
    national_ranks = NationalRank.select_attrs(['id', 'name'])

    form = '\n'.join([
        '<div class="container">',
        f'<form action="/players/add" method="post">',
        render_text_input_row("last_name", "Прізвище"),
        render_text_input_row("first_name", "Ім'я"),
        render_select_row('city_id', "Місто", cities),
        render_number_input_row('rating', "Рейтинг", '100', '3000', '0.001'),
        render_select_row('rank_id', "Ранг", ranks),
        render_select_row('national_rank_id', "Розряд", national_ranks),
        render_text_input_row("pin", "EGF PIN"),
        render_checkbox_row('is_active', "Активний"),
        render_submit(),
        '</form>',
        '</div>',
    ])

    return render_template('add_player.html', form=form, error=error)
Exemple #2
0
def add_tournament():
    add_url = url_for('.add_tournament')

    if request.method == 'POST':
        file = request.files['file']

        filename = file.filename
        if not filename:
            flash('Додайте файл з турнірними даними', 'isa_warning')
            return redirect(url_for('.add_tournament'))

        if not allowed_file(filename):
            flash('Файл має бути текстовим', 'isa_error')
            return redirect(url_for('.add_tournament'))

        insert_data = dict(request.form)
        insert_data['is_ranked'] = 'is_ranked' in insert_data.keys()
        insert_data['date_start'] = request.form.getlist('date_start')[0]
        insert_data['date_end'] = request.form.getlist('date_end')[0]
        tournament_id = None
        try:
            tournament_id = Tournament.execute_insert([insert_data])[0]
            parser = TournamentParser(file.read(), tournament_id)
            parser.run()
        except Exception:
            flash('Oops!', 'isa_error')
            if tournament_id:
                pairing_ids = Pairing.select_attrs(
                    ['id'], {'tp.tournament_id': tournament_id})
                existing_participant_ids = Participant.select_attrs(
                    ['id'], {'tournament_id': tournament_id})
                Pairing.execute_delete([p[0] for p in pairing_ids])
                Participant.execute_delete(
                    [p[0] for p in existing_participant_ids])
                Tournament.execute_delete([tournament_id])
            return redirect(url_for('.add_tournament'))
        return redirect(
            url_for('.tournament_info', tournament_id=tournament_id))

    cities = City.select_attrs(['id', 'name'])

    form = '\n'.join([
        '<div class="container">',
        f'<form action="{add_url}" enctype="multipart/form-data" method="post">',
        render_text_input_row("name", "Назва"),
        render_select_row('city_id', "Місто", cities),
        render_date_row('date_start', 'Дата початку',
                        str(datetime.date.today())),
        render_date_row('date_end', 'Дата закінчення',
                        str(datetime.date.today())),
        render_text_input_row("pin", "EGF PIN"),
        render_checkbox_row('is_ranked', "Рейтинговий"),
        render_file_row('file', 'Файл'),
        render_submit(),
        '</form>',
        '</div>',
    ])

    return render_template('add_tournament.html', form=form)
Exemple #3
0
def edit_player(player_id):
    if request.method == 'POST':
        update_data = dict(request.form)
        update_data['is_active'] = 'is_active' in update_data.keys()
        try:
            Player.execute_update(player_id, **update_data)
            flash('Дані гравця оновлені', 'isa_success')
            return redirect(url_for('.players'))
        except mysql.connector.Error as err:
            flash(err.msg, 'isa_error')

        return redirect(url_for('.player_info', player_id=player_id))

    player = Player.execute_select({'id': player_id})[0]

    cities = City.select_attrs(['id', 'name'])
    ranks = Rank.select_attrs(['id', 'name'])
    national_ranks = NationalRank.select_attrs(['id', 'name'])

    form = '\n'.join([
        '<div class="container">',
        f'<form action="/players/{player_id}/edit" method="post">',
        render_text_input_row("last_name", "Прізвище", player.last_name),
        render_text_input_row("first_name", "Ім'я", player.first_name),
        render_select_row('city_id', "Місто", cities, player.city.id),
        render_number_input_row('rating', "Рейтинг", '100', '3000', '0.001',
                                player.rating),
        render_select_row('rank_id', "Ранг", ranks, player.rank.id),
        render_select_row('national_rank_id', "Розряд", national_ranks,
                          player.national_rank.id),
        render_text_input_row("pin", "EGF PIN", player.pin),
        render_checkbox_row('is_active', "Активний", player.is_active),
        render_submit(),
        '</form>',
        '</div>',
    ])

    return render_template('edit_player.html', player=player, form=form)
Exemple #4
0
def edit_tournament(tournament_id):
    edit_url = url_for('.edit_tournament', tournament_id=tournament_id)

    if request.method == 'POST':
        update_data = dict(request.form)
        update_data['is_ranked'] = 'is_ranked' in update_data.keys()
        update_data['date_start'] = request.form.getlist('date_start')[0]
        update_data['date_end'] = request.form.getlist('date_end')[0]
        try:
            Tournament.execute_update(tournament_id, update_data)
            flash('Дані турніру оновлені', 'isa_success')
            return redirect(
                url_for('.tournament_info', tournament_id=tournament_id))

        except mysql.connector.Error as err:
            flash(err.msg, 'isa_error')
            return redirect(edit_url)

    tournament = Tournament.execute_select({'id': tournament_id})[0]
    cities = City.select_attrs(['id', 'name'])

    form = '\n'.join([
        '<div class="container">',
        f'<form action="{edit_url}" method="post">',
        render_text_input_row("name", "Назва", tournament.name),
        render_select_row('city_id', "Місто", cities, tournament.city.id),
        render_date_row('date_start', 'Дата початку', tournament.date_start),
        render_date_row('date_end', 'Дата закінчення', tournament.date_end),
        render_text_input_row("pin", "EGF PIN", tournament.pin),
        render_checkbox_row('is_ranked', "Рейтинговий", tournament.is_ranked),
        render_submit(),
        '</form>',
        '</div>',
    ])

    return render_template('edit_tournament.html',
                           tournament=tournament,
                           form=form)