|
| 1 | +import os |
| 2 | +import base64 |
| 3 | + |
| 4 | +from flask import Flask, render_template, request, redirect, url_for, session |
| 5 | + |
| 6 | +from model import SavedTotal |
| 7 | + |
| 8 | +app = Flask(__name__) |
| 9 | +app.secret_key = b'\xb6x(\xd67\x1f\xa7\x15\x92\xf1VqU\xe9|\xbcqu\xac\xf6\x16\xa8\x8f\xe5' |
| 10 | + |
| 11 | +@app.route('/retrieve') |
| 12 | +def retrieve(): |
| 13 | + code = request.args.get('code', None) |
| 14 | + |
| 15 | + if code is None: |
| 16 | + return render_template("retrieve.jinja2") |
| 17 | + try: |
| 18 | + saved_total = SavedTotal.get(SavedTotal.code == code) |
| 19 | + except SavedTotal.DoesNotExist: |
| 20 | + return render_template("retrieve.jinja2") |
| 21 | + |
| 22 | + session['total'] = saved_total.value |
| 23 | + |
| 24 | + return redirect(url_for('add')) |
| 25 | + |
| 26 | + |
| 27 | +@app.route('/add', methods=['GET', 'POST']) |
| 28 | +def add(): |
| 29 | + if 'total' not in session: |
| 30 | + session['total'] = 0 |
| 31 | + if request.method == 'POST': |
| 32 | + # Handle the form submission |
| 33 | + number = int(request.form['number']) |
| 34 | + session['total'] += number |
| 35 | + |
| 36 | + return render_template('add.jinja2', session=session) |
| 37 | + |
| 38 | +@app.route('/save', methods=['POST']) |
| 39 | +def save(): |
| 40 | + total = session.get('total', 0) |
| 41 | + code = base64.b32encode(os.urandom(8)).decode().strip('=') |
| 42 | + |
| 43 | + saved_total = SavedTotal(value=total, code=code) |
| 44 | + saved_total.save() |
| 45 | + |
| 46 | + return render_template('save.jinja2', code=code) |
| 47 | + |
| 48 | + |
| 49 | +if __name__ == "__main__": |
| 50 | + port = int(os.environ.get("PORT", 6738)) |
| 51 | + app.run(host='0.0.0.0', port=port) |
| 52 | + |
0 commit comments