Нет описания

app.py 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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('/lgs', methods=["GET", "POST"])
  15. def lgs():
  16. lgs = mongo.db.lgs.find()
  17. teams = mongo.db.teams.find()
  18. if request.method == "POST":
  19. if 'createLg' in request.form:
  20. name = request.form.get('title', None)
  21. team = Leauge(name, mongo)
  22. team.create()
  23. return redirect(url_for(".lgs"))
  24. lg = None
  25. if 'lg_id' in request.args:
  26. #lg = mongo.db.lgs.find_one({'_id': ObjectId(request.args.get('lg_id'))})
  27. lg = Leauge.from_id(request.args.get('lg_id'), mongo)
  28. if 'selectTeam' in request.form:
  29. team_values = request.form.getlist('teams')
  30. print(f"teams = {team_values}")
  31. for t in team_values:
  32. lg.add_team(t)
  33. lg.save()
  34. return render_template('lgs.html', lgs = lgs, lg=lg, teams = teams)
  35. @app.route('/team/<team_id>', methods=["GET", "POST"])
  36. def team(team_id):
  37. team = mongo.db.teams.find_one({"_id": ObjectId(team_id)})
  38. results = sfp.search_player("")
  39. currentPlayers = []
  40. for p in team['players']:
  41. try:
  42. currentPlayers.append(sfp.get_player(p))
  43. except:
  44. currentPlayers.append(None)
  45. if 'searchBtn' in request.form:
  46. name = request.form.get('name', '')
  47. results = sfp.search_player(name)
  48. if 'deletePlayer' in request.form:
  49. deletePlayers = request.form.getlist('deletes')
  50. print(f"delete players = {deletePlayers}")
  51. players = team['players']
  52. print(f"players = {players}")
  53. for i in deletePlayers:
  54. print(f"i = {i}")
  55. players.remove(int(i))
  56. mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": players}})
  57. return redirect(url_for("team", team_id=team_id))
  58. if 'selectPlayers' in request.form:
  59. selectPlayers = request.form.getlist('players')
  60. selectPlayers = [int(x) for x in selectPlayers]
  61. player_set = set(team["players"])
  62. for p in selectPlayers:
  63. player_set.add(p)
  64. mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": list(player_set)}})
  65. return redirect(url_for("team", team_id=team_id))
  66. return render_template('team.html', team = team, results = results, currentPlayers = currentPlayers)
  67. @app.route('/', methods=["GET", "POST"])
  68. def index():
  69. players = sfp.players[:400]
  70. print("=== players ===")
  71. print(players)
  72. selectTeam = request.args.get("t", "")
  73. if request.method == "POST":
  74. teamCreate = request.form.get('teamCreate', None)
  75. if 'selectPlayerBtn' in request.form:
  76. print(f"selectPlayerBtn == {selectTeam}")
  77. selectPlayers = request.form.getlist('players')
  78. selectPlayers = [int(x) for x in selectPlayers]
  79. mongo.db.teams.update_one({"_id": ObjectId(selectTeam)}, {"$set": {"players": selectPlayers}})
  80. print("select players")
  81. print(selectPlayers)
  82. if teamCreate:
  83. print("Team Create")
  84. teamName = request.form.get('teamName', None)
  85. mongo.db.teams.insert_one({'title': teamName})
  86. teams = mongo.db.teams.find()
  87. currentTeam = None
  88. currentPlayers = []
  89. if selectTeam != "":
  90. currentTeam = mongo.db.teams.find_one({"_id": ObjectId(selectTeam)})
  91. for p in currentTeam['players']:
  92. try:
  93. currentPlayers.append(sfp.get_player(p))
  94. except:
  95. currentPlayers.append(None)
  96. #currentPlayers = sfp.get_players(currentTeam['players'])
  97. return render_template('index.html', players = players, teams=teams, selectTeam = selectTeam, currentTeam = currentTeam, currentPlayers = currentPlayers)