示例#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)
示例#2
0
    def process_player(self, row, city_id, rank_id):
        last_name, first_name = row[self.slices[self.indices['full_name']]].split(',')
        last_name = last_name.strip()
        first_name = first_name.strip()
        rating = row[self.slices[self.indices['rating']]].strip()
        rating = float(rating) if rating else None

        players = Player.execute_select({'last_name': last_name, 'first_name': first_name})
        if len(players) == 1:
            return players[0].id

        players = [p for p in players if p.city.id == city_id]
        if len(players) == 1:
            return players[0].id

        players = [p for p in players if p.rank.id == rank_id]
        if len(players) == 1:
            return players[0].id

        player_data = {
            'last_name': last_name,
            'first_name': first_name,
            'rating': rating,
            'city_id': city_id,
            'rank_id': rank_id,
            'is_active': False,
        }
        return Player.execute_insert([player_data])[0]