1 from flask import Flask, render_template, send_file, request, session, redirect, url_for, make_response
2 from flask_cors import CORS
7 import matplotlib.pyplot as plt
10 import coffee_db as db
12 from datetime import date, timedelta
16 CORS(app, supports_credentials=True)
17 app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
23 return render_template('hello.html', name=db.get_name(uid))
24 return render_template('hello.html')
26 @app.route('/login', methods=["POST"])
27 @app.route('/login/<uid>')
29 if request.method == "POST":
30 uid = request.data.decode("utf-8")
34 return redirect(url_for('user'))
38 session.pop('uid', None)
39 return redirect(url_for('user'))
45 return render_template('user.html',
46 name=db.get_name(uid),
48 count=db.coffee_count(uid, 0),
51 return render_template('user.html')
53 @app.route('/user/rename')
55 name = request.args.get("name")
56 if name and "uid" in session:
58 db.name_user(uid, name)
59 return redirect(url_for('user'))
61 @app.route("/coffee/graph_flavors")
62 def coffee_graph_flavors():
66 flavors, counts = zip(*db.coffee_flavors(uid))
68 flavors, counts = zip(*db.coffee_flavors())
69 fig = plt.figure(figsize=(3,3))
70 ax = fig.add_subplot(111)
74 ax.set_title("Your taste")
75 fig.savefig(b, format="svg", bbox_inches="tight")
77 return send_file(b, mimetype="image/svg+xml")
79 @app.route("/coffee/graph_history")
80 def coffee_graph_history():
84 hist = db.coffee_history(uid)
86 hist = db.coffee_history()
91 days, counts = zip(*hist)
92 fig = plt.figure(figsize=(4,3))
93 ax = fig.add_subplot(111)
94 xdays = [i.strftime("%a") for i in [
95 date.today() - timedelta(j - 1) for j in
96 range(len(days), 0, -1)]]
99 ax.set_xticks(range(len(days)))
100 ax.set_xticklabels(xdays)
101 ax.bar(range(len(days)), counts)
102 ax.set_title("Your week")
103 fig.savefig(b, format="svg", bbox_inches="tight")
106 return send_file(b, mimetype="image/svg+xml")
108 @app.route("/coffee/add", methods=["POST"])
110 if request.method == "POST":
112 if json and "uid" in session:
113 db.add_coffee(session["uid"], json["flavor"], json["time"])
114 return redirect(url_for('user'))
116 @app.route("/coffee/count")
118 start = request.args.get("start")
119 stop = request.args.get("stop")
120 return str(db.coffee_count(session.get("uid"), start, stop))
124 response = make_response(render_template('main.js'))
125 response.headers['Content-Type'] = "text/javascript"
128 @app.route("/log", methods=["POST"])
130 if request.method == "POST":
131 data = request.data.decode("utf-8")