Skip to content

Commit f0abe39

Browse files
committed
Initial commit.
0 parents  commit f0abe39

9 files changed

+111
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__pycache__/

main.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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+

model.py

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import os
2+
3+
from peewee import Model, CharField, IntegerField
4+
from playhouse.db_url import connect
5+
6+
db = connect(os.environ.get('DATABASE_URL', 'sqlite:///my_database.db'))
7+
8+
class SavedTotal(Model):
9+
code = CharField(max_length=255, unique=True)
10+
value = IntegerField()
11+
12+
class Meta:
13+
database = db

my_database.db

12 KB
Binary file not shown.

setup.py

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from model import db, SavedTotal
2+
3+
db.connect()
4+
db.create_tables([SavedTotal])

templates/add.jinja2

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{% extends 'base.jinja2' %}
2+
3+
{% block subtitle %}Add them up! {% endblock subtitle %}
4+
5+
{% block content %}
6+
<p>Total: <span id="total">{{ session.total }}</span></p>
7+
<form method="POST">
8+
<label for="number">Number: </label><input type="number" id="number" name="number">
9+
<input type="submit" value="Add It!">
10+
</form>
11+
<form method="POST" action="{{ url_for('save') }}">
12+
<input type="submit" value="Save It!">
13+
</form>
14+
{% endblock content %}

templates/base.jinja2

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<html>
2+
<head>
3+
<title>Calculator</title>
4+
</head>
5+
<body>
6+
<h1>Calculator</h1>
7+
<h2>{% block subtitle %} {% endblock subtitle %}</h2>
8+
{% block content %} {% endblock content %}
9+
</body>
10+
</html>

templates/retrieve.jinja2

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{% extends 'base.jinja2' %}
2+
3+
{% block subtitle %} Retrieve a Total {% endblock subtitle %}
4+
5+
{% block content %}
6+
<form method="GET">
7+
<label for="code">Code: </label><input type="text" id="code" name="code">
8+
<input type="submit" value="Retrieve It!">
9+
</form>
10+
{% endblock content %}

templates/save.jinja2

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{% extends "base.jinja2" %}
2+
3+
{% block subtitle %} Save Your Progress {% endblock subtitle %}
4+
5+
{% block content %}
6+
Your code is: <span id="code">{{ code }}</span>
7+
{% endblock content %}

0 commit comments

Comments
 (0)