from flask import Flask, render_template, request, jsonify, redirect, url_for from fpl_lib import SFL, Team, Leauge from flask_pymongo import PyMongo from bson.objectid import ObjectId app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/fpl_db" mongo = PyMongo(app) sfp = SFL("ABC") sfp.setup() @app.route('/players/') def search_player(name): results = sfp.search_player(name) return jsonify(output=results) @app.route('/player/') def get_player(pid): player = sfp.get_player(int(pid)) return render_template("player.html", player = player) @app.route('/lgs', methods=["GET", "POST"]) def lgs(): lgs = mongo.db.lgs.find() teams = mongo.db.teams.find() if request.method == "POST": if 'createLg' in request.form: name = request.form.get('title', None) team = Leauge(name, mongo) team.create() return redirect(url_for(".lgs")) lg = None if 'lg_id' in request.args: #lg = mongo.db.lgs.find_one({'_id': ObjectId(request.args.get('lg_id'))}) lg = Leauge.from_id(request.args.get('lg_id'), mongo) if 'selectTeam' in request.form: team_values = request.form.getlist('teams') print(f"teams = {team_values}") for t in team_values: lg.add_team(t) lg.save() return render_template('lgs.html', lgs = lgs, lg=lg, teams = teams) @app.route('/team2/', methods=["GET", "POST"]) def team2(team_id): t = Team.from_id(team_id, mongo) t.sfp = sfp currentPlayers = t.get_players() results = sfp.search_player("") if 'searchBtn' in request.form: name = request.form.get('name', '') results = sfp.search_player(name) if 'selectPlayers' in request.form: selectPlayers = request.form.getlist('players') selectPlayers = [int(x) for x in selectPlayers] for i in selectPlayers: p = sfp.get_player(i) t.add_player(p) t.save() return redirect(url_for("team2", team_id=team_id)) if 'deletePlayer' in request.form: deletePlayers = request.form.getlist('deletes') for i in deletePlayers: t.remove_player(int(i)) t.save() return redirect(url_for("team2", team_id=team_id)) return render_template("team2.html", team = t, results = results, currentPlayers = currentPlayers) @app.route('/team/', methods=["GET", "POST"]) def team(team_id): team = mongo.db.teams.find_one({"_id": ObjectId(team_id)}) results = sfp.search_player("") currentPlayers = [] if 'players' in team: for p in team['players']: try: currentPlayers.append(sfp.get_player(p)) except: currentPlayers.append(None) if 'searchBtn' in request.form: name = request.form.get('name', '') results = sfp.search_player(name) if 'deletePlayer' in request.form: deletePlayers = request.form.getlist('deletes') print(f"delete players = {deletePlayers}") players = team['players'] print(f"players = {players}") for i in deletePlayers: print(f"i = {i}") players.remove(int(i)) mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": players}}) return redirect(url_for("team", team_id=team_id)) if 'selectPlayers' in request.form: selectPlayers = request.form.getlist('players') selectPlayers = [int(x) for x in selectPlayers] player_set = set(team["players"]) for p in selectPlayers: player_set.add(p) mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": list(player_set)}}) return redirect(url_for("team", team_id=team_id)) return render_template('team.html', team = team, results = results, currentPlayers = currentPlayers) @app.route('/', methods=["GET", "POST"]) def index(): players = sfp.players[:400] print("=== players ===") print(players) selectTeam = request.args.get("t", "") if request.method == "POST": teamCreate = request.form.get('teamCreate', None) if 'selectPlayerBtn' in request.form: print(f"selectPlayerBtn == {selectTeam}") selectPlayers = request.form.getlist('players') selectPlayers = [int(x) for x in selectPlayers] mongo.db.teams.update_one({"_id": ObjectId(selectTeam)}, {"$set": {"players": selectPlayers}}) print("select players") print(selectPlayers) if teamCreate: print("Team Create") teamName = request.form.get('teamName', None) mongo.db.teams.insert_one({'title': teamName}) teams = mongo.db.teams.find() currentTeam = None currentPlayers = [] if selectTeam != "": currentTeam = mongo.db.teams.find_one({"_id": ObjectId(selectTeam)}) for p in currentTeam['players']: try: currentPlayers.append(sfp.get_player(p)) except: currentPlayers.append(None) #currentPlayers = sfp.get_players(currentTeam['players']) return render_template('index.html', players = players, teams=teams, selectTeam = selectTeam, currentTeam = currentTeam, currentPlayers = currentPlayers)