-
Notifications
You must be signed in to change notification settings - Fork 0
/
runWebsite.py
100 lines (79 loc) · 2.75 KB
/
runWebsite.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
89
90
91
92
93
94
95
96
97
98
99
100
from flask import Flask, request,jsonify,render_template
from RNG import rng
import rethinkdb as r
app = Flask(__name__)
randomNameGenerator = rng()
@app.route("/")
def hello():
return render_template('index.html')
def tabifyResult(scores):
for idx,score in enumerate(scores):
try:
score['username']=getNameOfWatch(randomNameGenerator,score['username'])
except KeyError:
pass
score['index']=idx+1
def renderScores(nameOfTable, GameName):
r.connect().repl()
try:
r.db("test").table_create(nameOfTable).run()
except r.ReqlOpFailedError:
pass
bestScorePerPlayer = r.table(nameOfTable).group("username").max("score").run()
topscoresPerPlayer = r.expr(bestScorePerPlayer.values()).order_by(r.desc("score")).limit(10).run()
topscoresofalltime = r.table(nameOfTable).order_by(r.desc("score")).limit(10).run()
tabifyResult(topscoresPerPlayer)
tabifyResult(topscoresofalltime)
return render_template('bshighScores.html',gameName=GameName, topscoresByPlayerTable=topscoresPerPlayer,topscoresalltimeTable=topscoresofalltime)
@app.route("/ballscores")
def ball():
return renderScores("authors","Ball")
@app.route("/firescores")
def fire():
return renderScores("fire","Fire")
@app.route('/about')
def aboutPage():
return render_template('about.html')
def submitJson(tableName,data):
r.connect().repl()
try:
r.db("test").table_create(tableName).run()
except r.ReqlOpFailedError:
pass
try:
r.db("test").table_create("nameMapping").run()
except r.ReqlOpFailedError:
pass
if request.method == 'POST':
if data['type']=="username":
data=getNameOfWatch(randomNameGenerator,data['username'])
return data
elif data['type']=="score":
r.table(tableName).insert(data).run()
return "submitted"
return "xx"
@app.route('/json', methods=['POST'])
def json():
return submitJson("authors",request.get_json())
@app.route('/jsonFire', methods=['POST'])
def jsonFire():
return submitJson("fire",request.get_json())
def getNameOfWatch(randomNameGenerator,name):
try:
r.db("test").table_create("nameMapping").run()
except r.ReqlOpFailedError:
pass
results = r.table("nameMapping").filter(r.row['username']==name).run()
for item in results:
return item['friendly']
else:
#add to database
print "New player!"
newData={'username':name,'friendly':randomNameGenerator.getName()}
r.table("nameMapping").insert(newData).run()
return newData['friendly']
if __name__ == "__main__":
#r.connect().repl()
#r.db("test").table_create("authors").run()
app.debug = False
app.run('0.0.0.0')