def tournament_info(tournament_id): tournament = Tournament.execute_select({'id': tournament_id})[0] pairings = Pairing.execute_select({'tp.tournament_id': tournament_id}) aggregated_pairings = defaultdict(list) for pairing in pairings: aggregated_pairings[pairing.player].append(pairing.get_result()) rounds = max([len(games) for games in aggregated_pairings.values()]) return render_template('tournament_info.html', tournament=tournament, pairings=aggregated_pairings, rounds=rounds)
def tournaments(): tournament_list = Tournament.execute_select() table_data = [] for idx, tournament in enumerate(tournament_list, start=1): tr_data = [ render_link( url_for('.tournament_info', tournament_id=tournament.id), idx), render_link( url_for('.tournament_info', tournament_id=tournament.id), tournament.name) ] tr_data.extend( tournament.get_attrs('city.name', 'date_start', 'date_end', 'pin', 'is_ranked')) table_data.append(tr_data) column_names = [ '№ з/п', 'Назва', 'Місто', 'Дата початку', 'Дата завершення', 'PIN', 'Рейтинговий' ] table = render_table(column_names, table_data) return render_template('tournament_list.html', table=table)
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)
def index(): players = Player.execute_select()[:10] tournaments = Tournament.execute_select()[:10] return render_template('index.html', players=players, tournaments=tournaments)