-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.py
88 lines (68 loc) · 4.25 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from flask import Flask, render_template, request, redirect, url_for
from functions import get_current_gameweek, get_input_squad, get_team_info, get_top_players_by_position, assign_bench_and_watch_avoid
from functions import select_starting_11_and_bench, get_player_data, get_free_transfers, suggest_transfer,sort_by_pca_scores,determine_captain_and_vice_captain
# from functions import suggest_multiple_transfers
import pandas as pd
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def get_team_id():
if request.method == 'POST':
# Get team_id from the form submission
team_id = request.form['team_id']
return redirect(url_for('show_team_info', team_id=team_id))
return render_template('get_team_id.html')
@app.route('/team/<team_id>', methods=['GET'])
def show_team_info(team_id):
gw_number = get_current_gameweek()
input_squad = get_input_squad(int(team_id), gw_number)
team_info = get_team_info(int(team_id))
players_df = get_player_data()
top_goalkeepers, top_defenders, top_midfielders, top_forwards, all_players = get_top_players_by_position()
if team_info is None:
return "Error: Team information not found"
# Extract required fields from team_info
player_first_name = team_info.get('player_first_name', "")
player_last_name = team_info.get('player_last_name', "")
welcome_message = f"Welcome {player_first_name} {player_last_name}!"
gameweek_message = f"For Gameweek {gw_number + 1}"
# Call the function to get players to keep and watch/avoid
keep, watch_avoid = assign_bench_and_watch_avoid(input_squad['id'])
sorted_keep = keep.sort_values(by='adjusted_score', ascending=False)
# Assuming sorted_keep is a pandas DataFrame
sorted_keep_list = sorted_keep.to_dict(orient='records')
# Sort the 'watch_avoid' DataFrame by 'intracluster_distance' and display
sorted_watch_avoid = sort_by_pca_scores(watch_avoid)
# Merge sorted_watch_avoid and keep into input_squad_with_pca
input_squad_with_pca = pd.concat([sorted_watch_avoid, keep], ignore_index=True)
# Convert DataFrames to lists of dictionaries
top_goalkeepers_list = top_goalkeepers.to_dict(orient='records')
top_defenders_list = top_defenders.to_dict(orient='records')
top_midfielders_list = top_midfielders.to_dict(orient='records')
top_forwards_list = top_forwards.to_dict(orient='records')
starting_11, bench = select_starting_11_and_bench(input_squad, players_df)
free_transfers_info = get_free_transfers(team_id)
available_budget = free_transfers_info['last_deadline_bank'] / 10 # Convert to millions if needed
free_transfers = free_transfers_info['available_transfers']
suggested_watch_transfer = suggest_transfer(sorted_watch_avoid, top_goalkeepers,top_defenders,top_midfielders,top_forwards,available_budget,free_transfers,team_id)
suggested_keep_transfer = suggest_transfer(keep, top_goalkeepers,top_defenders,top_midfielders,top_forwards,available_budget,5,team_id)
# multiple_transfer = suggest_multiple_transfers(input_squad_with_pca, top_goalkeepers,top_defenders,top_midfielders,top_forwards,available_budget,2,team_id)
# print(multiple_transfer)
captain_and_vice = determine_captain_and_vice_captain(keep)
# Assuming you are using Flask or a similar framework
return render_template('team_info.html',
welcome_message=f"Welcome {player_first_name}!",
gameweek_message=f"For Gameweek {gw_number + 1}",
sorted_keep = sorted_keep_list,
starting_11=starting_11,
bench=bench,
available_budget=available_budget,
suggested_watch_transfer=suggested_watch_transfer,
suggested_keep_transfer = suggested_keep_transfer,
captain = captain_and_vice['captain'],
vice_captain = captain_and_vice['vice_captain'],
top_goalkeepers=top_goalkeepers_list,
top_defenders=top_defenders_list,
top_midfielders=top_midfielders_list,
top_forwards=top_forwards_list) # Add suggested transfers data here
if __name__ == "__main__":
app.run(debug=True)