No Description

app.py 5.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. from flask import Flask, render_template, request, jsonify, redirect, url_for
  2. from fpl_lib import SFL, Team, Leauge
  3. from flask_pymongo import PyMongo
  4. from bson.objectid import ObjectId
  5. app = Flask(__name__)
  6. app.config["MONGO_URI"] = "mongodb://localhost:27017/fpl_db"
  7. mongo = PyMongo(app)
  8. sfp = SFL("ABC")
  9. sfp.setup()
  10. @app.route('/players/<name>')
  11. def search_player(name):
  12. results = sfp.search_player(name)
  13. return jsonify(output=results)
  14. @app.route('/player/<pid>')
  15. def get_player(pid):
  16. player = sfp.get_player(int(pid))
  17. return render_template("player.html", player = player)
  18. @app.route('/lgs', methods=["GET", "POST"])
  19. def lgs():
  20. lgs = mongo.db.lgs.find()
  21. teams = mongo.db.teams.find()
  22. if request.method == "POST":
  23. if 'createLg' in request.form:
  24. name = request.form.get('title', None)
  25. team = Leauge(name, mongo)
  26. team.create()
  27. return redirect(url_for(".lgs"))
  28. lg = None
  29. if 'lg_id' in request.args:
  30. #lg = mongo.db.lgs.find_one({'_id': ObjectId(request.args.get('lg_id'))})
  31. lg = Leauge.from_id(request.args.get('lg_id'), mongo)
  32. if 'selectTeam' in request.form:
  33. team_values = request.form.getlist('teams')
  34. print(f"teams = {team_values}")
  35. for t in team_values:
  36. lg.add_team(t)
  37. lg.save()
  38. return render_template('lgs.html', lgs = lgs, lg=lg, teams = teams)
  39. @app.route('/team2/<team_id>', methods=["GET", "POST"])
  40. def team2(team_id):
  41. t = Team.from_id(team_id, mongo)
  42. t.sfp = sfp
  43. currentPlayers = t.get_players()
  44. results = sfp.search_player("")
  45. if 'searchBtn' in request.form:
  46. name = request.form.get('name', '')
  47. results = sfp.search_player(name)
  48. if 'selectPlayers' in request.form:
  49. selectPlayers = request.form.getlist('players')
  50. selectPlayers = [int(x) for x in selectPlayers]
  51. for i in selectPlayers:
  52. p = sfp.get_player(i)
  53. t.add_player(p)
  54. t.save()
  55. return redirect(url_for("team2", team_id=team_id))
  56. if 'deletePlayer' in request.form:
  57. deletePlayers = request.form.getlist('deletes')
  58. for i in deletePlayers:
  59. t.remove_player(int(i))
  60. t.save()
  61. return redirect(url_for("team2", team_id=team_id))
  62. return render_template("team2.html", team = t, results = results, currentPlayers = currentPlayers)
  63. @app.route('/team/<team_id>', methods=["GET", "POST"])
  64. def team(team_id):
  65. team = mongo.db.teams.find_one({"_id": ObjectId(team_id)})
  66. results = sfp.search_player("")
  67. currentPlayers = []
  68. if 'players' in team:
  69. for p in team['players']:
  70. try:
  71. currentPlayers.append(sfp.get_player(p))
  72. except:
  73. currentPlayers.append(None)
  74. if 'searchBtn' in request.form:
  75. name = request.form.get('name', '')
  76. results = sfp.search_player(name)
  77. if 'deletePlayer' in request.form:
  78. deletePlayers = request.form.getlist('deletes')
  79. print(f"delete players = {deletePlayers}")
  80. players = team['players']
  81. print(f"players = {players}")
  82. for i in deletePlayers:
  83. print(f"i = {i}")
  84. players.remove(int(i))
  85. mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": players}})
  86. return redirect(url_for("team", team_id=team_id))
  87. if 'selectPlayers' in request.form:
  88. selectPlayers = request.form.getlist('players')
  89. selectPlayers = [int(x) for x in selectPlayers]
  90. player_set = set(team["players"])
  91. for p in selectPlayers:
  92. player_set.add(p)
  93. mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": list(player_set)}})
  94. return redirect(url_for("team", team_id=team_id))
  95. return render_template('team.html', team = team, results = results, currentPlayers = currentPlayers)
  96. @app.route('/', methods=["GET", "POST"])
  97. def index():
  98. players = sfp.players[:400]
  99. print("=== players ===")
  100. print(players)
  101. selectTeam = request.args.get("t", "")
  102. if request.method == "POST":
  103. teamCreate = request.form.get('teamCreate', None)
  104. if 'selectPlayerBtn' in request.form:
  105. print(f"selectPlayerBtn == {selectTeam}")
  106. selectPlayers = request.form.getlist('players')
  107. selectPlayers = [int(x) for x in selectPlayers]
  108. mongo.db.teams.update_one({"_id": ObjectId(selectTeam)}, {"$set": {"players": selectPlayers}})
  109. print("select players")
  110. print(selectPlayers)
  111. if teamCreate:
  112. print("Team Create")
  113. teamName = request.form.get('teamName', None)
  114. mongo.db.teams.insert_one({'title': teamName})
  115. teams = mongo.db.teams.find()
  116. currentTeam = None
  117. currentPlayers = []
  118. if selectTeam != "":
  119. currentTeam = mongo.db.teams.find_one({"_id": ObjectId(selectTeam)})
  120. for p in currentTeam['players']:
  121. try:
  122. currentPlayers.append(sfp.get_player(p))
  123. except:
  124. currentPlayers.append(None)
  125. #currentPlayers = sfp.get_players(currentTeam['players'])
  126. return render_template('index.html', players = players, teams=teams, selectTeam = selectTeam, currentTeam = currentTeam, currentPlayers = currentPlayers)