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
15 CORS(app, supports_credentials=True)
16 app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
22 return render_template('hello.html', name=db.get_name(uid))
23 return render_template('hello.html')
25 @app.route('/login', methods=["POST"])
26 @app.route('/login/<uid>')
28 if request.method == "POST":
29 uid = request.data.decode("utf-8")
33 return redirect(url_for('user'))
37 session.pop('uid', None)
38 return redirect(url_for('user'))
44 return render_template('user.html',
45 name=db.get_name(uid),
47 count=db.coffee_count(uid, 0),
50 return render_template('user.html')
52 @app.route('/user/rename')
54 name = request.args.get("name")
55 if name and "uid" in session:
57 db.name_user(uid, name)
58 return redirect(url_for('user'))
60 @app.route("/coffee/graph_flavors")
61 def coffee_graph_flavors():
65 flavors, counts = zip(*db.coffee_flavors(uid))
67 flavors, counts = zip(*db.coffee_flavors())
69 ax = fig.add_subplot(111)
73 ax.set_title("Your taste")
74 fig.savefig(b, format="svg", bbox_inches="tight")
76 return send_file(b, mimetype="image/svg+xml")
78 @app.route("/coffee/graph_history")
79 def coffee_graph_history():
83 hist = db.coffee_history(uid)
85 hist = db.coffee_history()
90 days, counts = zip(*hist)
92 ax = fig.add_subplot(111)
93 ax.bar(range(len(days)), counts)
94 ax.set_title("Your week")
95 fig.savefig(b, format="svg", bbox_inches="tight")
97 return send_file(b, mimetype="image/svg+xml")
99 @app.route("/coffee/add", methods=["POST"])
101 if request.method == "POST":
103 if json and "uid" in session:
104 db.add_coffee(session["uid"], json["flavor"], json["time"])
105 return redirect(url_for('user'))
107 @app.route("/coffee/count")
109 start = request.args.get("start")
110 stop = request.args.get("stop")
111 return str(db.coffee_count(session.get("uid"), start, stop))
115 response = make_response(render_template('main.js'))
116 response.headers['Content-Type'] = "text/javascript"
119 @app.route("/log", methods=["POST"])
121 if request.method == "POST":
122 data = request.data.decode("utf-8")