Files
erdbeerhannah/app.py
2024-05-27 19:10:12 +02:00

143 lines
4.3 KiB
Python

import os
import logging
from flask import Flask, render_template, request, session, send_from_directory
from flask_bootstrap import Bootstrap
app = Flask(__name__)
app.config['SECRET_KEY'] = 'j69ol5mcHLsEtLg4Y/+myd9wWD4pp56E'
# setup logging
formatter = logging.Formatter(
'%(asctime)s %(levelname)s %(process)d ---- %(threadName)s '
'%(module)s : %(funcName)s {%(pathname)s:%(lineno)d} %(message)s','%Y-%m-%dT%H:%M:%SZ')
handler = logging.StreamHandler()
handler.setFormatter(formatter)
app.logger.setLevel(logging.DEBUG)
app.logger.addHandler(handler)
Bootstrap(app)
version = "1.0.7/2024-05-27"
postcounter = 0
gesamtwert = 0
change = 0
givenfloat = 0
sum = ""
item1 = 0
item2 = 0
item3 = 0
item4 = 0
item5 = 0
item6 = 0
app.logger.info('Starting erdbeerhannah v' + version)
# prevent cached responses
# https://stackoverflow.com/questions/47376744/how-to-prevent-cached-response-flask-server-using-chrome
@app.after_request
def add_header(r):
"""
Add headers to both force latest IE rendering engine or Chrome Frame,
and also to cache the rendered page for 10 minutes.
"""
r.headers["Cache-Control"] = "no-store, max-age=0"
return r
@app.route("/", methods=["GET", "POST"])
def index():
global gesamtwert, item1, item2, item3, item4, item5, item6, sum, givenfloat, change, given, background, postcounter, version
background = "bg-white"
if request.method == "POST":
postcounter += 1
# wert = float(request.form["wert"])
wert = request.form.get('wert', "0", type=float)
given = request.form.get('given', "0", type=float)
app.logger.debug('wert: %s, given: %s', wert, given)
wertfloat = float(wert)
givenfloat = float(given)
# reset button
if wertfloat == 0:
global gesamtwert
gesamtwert = 0
change = 0
sum = "0"
item1 = 0
item2 = 0
item3 = 0
item4 = 0
item5 = 0
item6 = 0
background = "bg-white"
# summarize value
elif wertfloat != -2:
gesamtwert += wertfloat
gesamtwert = round(gesamtwert, 2)
if gesamtwert > 0:
sum = str(gesamtwert) + "0"
# summarize items
if wertfloat == 5.8:
item1 += 1
if wertfloat == 4.8:
item2 += 1
if wertfloat == 3.3:
item3 += 1
if wertfloat == 8.8:
item4 += 1
if wertfloat == 5.5:
item5 += 1
if wertfloat == .2:
item6 += 1
if givenfloat > 0:
try:
gesamtwert = session['summefloat'] or 0
sum = str(gesamtwert) + "0"
change = str(round((givenfloat - gesamtwert) * -1, 2)) + "0"
except:
app.logger.warning("Failed to read sum")
if givenfloat - gesamtwert < 0:
background = "bg-danger"
else:
background = "bg-white"
session['item1'] = item1
session['item2'] = item2
session['item3'] = item3
session['item4'] = item4
session['item5'] = item5
session['item6'] = item6
session['summefloat'] = gesamtwert
session['summestring'] = sum
session['change'] = change
session['given'] = givenfloat
app.logger.info('*** sum %s, given %s, change %s', sum, givenfloat, change)
app.logger.info('*** postcounter %s', postcounter)
return render_template("index.html", gesamtwert=session.get('summestring', 0),
change=session.get('change', 0),
given=session.get('given', 0),
item1=session.get('item1', 0),
item2=session.get('item2', 0),
item3=session.get('item3', 0),
item4=session.get('item4', 0),
item5=session.get('item5', 0),
item6=session.get('item6', 0),
background=background,
version=version,
)
@app.route('/favicon.ico')
def favicon():
return send_from_directory(os.path.join(app.root_path, 'static'),
'favicon.ico', mimetype='image/vnd.microsoft.icon')
# @app.route('/about')
# def about():
# return send_from_directory(os.path.join(app.root_path, 'static'),
# 'about.html')
if __name__ == "__main__":
app.run(debug=True, host='127.0.0.1')