tum лет назад: 5
Родитель
Сommit
295218efff
7 измененных файлов с 114 добавлено и 3 удалено
  1. BIN
      __pycache__/app.cpython-36.pyc
  2. BIN
      __pycache__/fpl_lib.cpython-36.pyc
  3. 54 2
      app.py
  4. 4 0
      fpl_lib.py
  5. 26 0
      templates/base.html
  6. 1 1
      templates/index.html
  7. 29 0
      templates/team.html

BIN
__pycache__/app.cpython-36.pyc


BIN
__pycache__/fpl_lib.cpython-36.pyc


+ 54 - 2
app.py

@@ -1,4 +1,4 @@
1
-from flask import Flask, render_template, request
1
+from flask import Flask, render_template, request, jsonify, redirect, url_for
2 2
 from fpl_lib import SFL, Team
3 3
 from flask_pymongo import PyMongo
4 4
 from bson.objectid import ObjectId
@@ -11,6 +11,58 @@ mongo = PyMongo(app)
11 11
 sfp = SFL("ABC")
12 12
 sfp.setup()
13 13
 
14
+
15
+
16
+@app.route('/players/<name>')
17
+def search_player(name):
18
+    results = sfp.search_player(name)
19
+    return jsonify(output=results)
20
+
21
+@app.route('/team/<team_id>', methods=["GET", "POST"])
22
+def team(team_id):
23
+    team = mongo.db.teams.find_one({"_id": ObjectId(team_id)})
24
+
25
+    results = sfp.search_player("")
26
+
27
+    currentPlayers = []
28
+
29
+
30
+    for p in team['players']:
31
+        try:
32
+            currentPlayers.append(sfp.get_player(p))
33
+        except:
34
+            currentPlayers.append(None)
35
+
36
+    if 'searchBtn' in request.form:
37
+        name = request.form.get('name', '')
38
+        results = sfp.search_player(name)
39
+
40
+
41
+    if 'deletePlayer' in request.form:
42
+        deletePlayers = request.form.getlist('deletes')
43
+        print(f"delete players  = {deletePlayers}")
44
+        players = team['players']
45
+        print(f"players = {players}")
46
+        for i in deletePlayers:
47
+            print(f"i = {i}")
48
+            players.remove(int(i))
49
+
50
+
51
+        mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": players}})
52
+        return redirect(url_for("team", team_id=team_id))
53
+
54
+    if 'selectPlayers' in request.form:
55
+        selectPlayers = request.form.getlist('players')
56
+        selectPlayers = [int(x) for x in selectPlayers]
57
+
58
+        player_set = set(team["players"])
59
+        for p in selectPlayers:
60
+            player_set.add(p)
61
+        mongo.db.teams.update_one({"_id": ObjectId(team_id)}, {"$set": {"players": list(player_set)}})
62
+        return redirect(url_for("team", team_id=team_id))
63
+
64
+    return render_template('team.html', team = team, results = results, currentPlayers = currentPlayers)
65
+
14 66
 @app.route('/', methods=["GET", "POST"])
15 67
 def index():
16 68
     players = sfp.players[:400]
@@ -37,10 +89,10 @@ def index():
37 89
 
38 90
     teams = mongo.db.teams.find()
39 91
     currentTeam = None
92
+    currentPlayers = []
40 93
 
41 94
     if selectTeam != "":
42 95
         currentTeam = mongo.db.teams.find_one({"_id": ObjectId(selectTeam)})
43
-        currentPlayers = []
44 96
 
45 97
         for p in currentTeam['players']:
46 98
             try:

+ 4 - 0
fpl_lib.py

@@ -40,6 +40,10 @@ class SFL:
40 40
     async def _get_player(self, pid):
41 41
         return await self.fpl.get_player(pid)
42 42
 
43
+    def search_player(self, name):
44
+        results = [{'info':  str(x), 'id': x.id } for x in self.players if name in x.web_name.lower()]
45
+        return results
46
+
43 47
 
44 48
 async def main():
45 49
     async with aiohttp.ClientSession() as session:

+ 26 - 0
templates/base.html

@@ -0,0 +1,26 @@
1
+<html>
2
+<head>
3
+    <meta http-equiv="content-type" content="text/html; charset=utf-8">
4
+
5
+    <title>Base</title>
6
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous">
7
+
8
+</head>
9
+<body>
10
+    <div class='container'>
11
+        <div class='row'>
12
+        <div class='col-md-3'>
13
+            {% block sidemenu %}
14
+            Side menu
15
+            {% endblock %}
16
+        </div>
17
+        <div class='col-md-9'>
18
+            {% block content %}
19
+            {% endblock %}
20
+        </div>
21
+        </div>
22
+    </div>
23
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous"></script>
24
+    
25
+</body>
26
+</html>

+ 1 - 1
templates/index.html

@@ -29,7 +29,7 @@
29 29
     </form>
30 30
     <ol>
31 31
     {% for t in teams %}
32
-    <li><a href="?t={{ t._id }}">{{ t['title'] }}</a></li>
32
+    <li><a href="{{ url_for('team', team_id=t['_id']) }}">{{ t['title'] }}</a></li>
33 33
     {% endfor %}
34 34
     </ol>
35 35
     </div>

+ 29 - 0
templates/team.html

@@ -0,0 +1,29 @@
1
+{% extends "base.html" %}
2
+{% block sidemenu %}
3
+<form method="post">
4
+    Enter Player Name
5
+    <input type="text" name="name" >
6
+    <input type="submit" name="searchBtn" value="Search">
7
+</form>
8
+    <form  method="post">
9
+        
10
+    <ul>
11
+    {% for r in results %}
12
+    <li><input type=checkbox name="players" value="{{ r.id }}" />{{ r.info }}</li>
13
+    {% endfor %}
14
+    </ul>
15
+    <input type="submit" name="selectPlayers" value="Select Players">
16
+    </form>
17
+{% endblock %}
18
+{% block content %}
19
+<h1> Current Team: {{ team.title }}</h1>
20
+    <h2>Players</h2>
21
+    <form method="post">
22
+    <ul>
23
+    {% for p in  currentPlayers %}
24
+    <li>{{ p }}  GS={{ p.goals_scored }} <input type="checkbox" name="deletes" value="{{ p.id  }}">Delete</li>
25
+    {% endfor %}
26
+    </ul>
27
+    <input type="submit" name="deletePlayer"  value="Delete Players">
28
+    </form>
29
+{% endblock %}