This repository has been archived by the owner on Feb 17, 2023. It is now read-only.
/
app.py
65 lines (49 loc) · 1.45 KB
/
app.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
# Copyright (c) Paul Tagliamonte <tag@pault.ag>, 2013
from flask import Flask, render_template, request, redirect
from legwords import WORDS
from legwords.core import db
from legwords.photos import create_photo_url
import random
app = Flask(__name__)
@app.template_filter("photo_url")
def photo_url(leg):
return create_photo_url(leg['_id'])
@app.route("/")
def index():
return render_template("index.html")
@app.route("/rate")
def rate():
legs = db.legislators.find()
offset = random.randint(0, legs.count())
leg = legs[offset]
return render_template("rate.html", **{
"legislator": leg,
"photo": create_photo_url(leg['_id']),
"words": WORDS,
})
@app.route("/report", methods=["POST"])
def report():
form = request.form
reaction = form['reaction']
legislator = form['legid']
leg = db.legislators.find_one({"_id": legislator})
if leg is None:
return redirect("/rate")
if reaction in leg['words']:
leg['words'][reaction] += 1
else:
leg['words'][reaction] = 1
db.legislators.save(leg, safe=True)
return redirect("/rate")
@app.route("/leaderboard")
def leaderboard():
env = {
"words": WORDS,
"results": {}
}
for word in WORDS:
env['results'][word] = db.legislators.find().sort(
"words.%s" % (word), -1)[:5]
return render_template("leaderboard.html", **env)
if __name__ == '__main__':
app.run(debug=True)