143 lines
4.3 KiB
Python
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') |