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)
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]