Compare commits
17 Commits
08705ae44e
...
main
Author | SHA1 | Date | |
---|---|---|---|
1a12dcd1d0 | |||
|
9f7bc8086c | ||
|
833287222d | ||
|
e2cdaf059a | ||
|
b2e8192a2d | ||
|
3a15183094 | ||
|
08d668c984 | ||
|
24e9d83a52 | ||
|
4d7e352220 | ||
|
abc4403373 | ||
|
57930c374a | ||
|
9318f0b25c | ||
|
02a9df95b5 | ||
|
9ad4038d6b | ||
|
c68fcc56f9 | ||
|
90eccad3f7 | ||
|
2440963afc |
21
README.md
21
README.md
@@ -1,6 +1,6 @@
|
||||
# erdbeerhannah
|
||||
|
||||
*Simple Rechner-App für Erdbeerstände*
|
||||
*Simple Rechner-App für Erdbeerstände (und ähnliche Verkausstellen)*
|
||||
|
||||
## Motivation
|
||||
|
||||
@@ -8,7 +8,7 @@ Viele Erdbeerstände in Deutschland haben keine elektronische Kasse. Aufgrund de
|
||||
|
||||
Für jeden Artikel gibt es einen großen Knopf. Ein Klick addiert 1x den ausgewählten Artikel zur Gesamtsumme. Optional kann per Eingabefeld das Wechselgeld berechnet werden.
|
||||
|
||||
Eine Demo-Instanz der App kann [hier](https://erdbeerhannah.elpatron.me/) zum freien Testen aufgerufen werden.
|
||||
Eine Demo-Instanz der App kann [hier](https://erdbeerhannah.elpatron.me/) zur freien Nutzung aufgerufen werden.
|
||||
|
||||
Die Demo-Instanz ist werbefrei und die Nutzung dauerhaft kostenlos. Details siehe in den Abschnitten *Anpassung* und *Privatsphäre*.
|
||||
|
||||
@@ -37,6 +37,10 @@ Individuelle Anpassungen (Birnen? Kirschen? Spargel?) oder ein passendes Brandin
|
||||
|
||||
Die Bereitstellung der App erfolgt am einfachsten mit Docker:
|
||||
|
||||
`git clone https://gitea.elpatron.me/elpatron/erdbeerhannah.git`
|
||||
|
||||
`cd erdbeerhannah`
|
||||
|
||||
`docker image build -t erdbeerhannah:latest .`
|
||||
|
||||
`docker run -p 9090:90 -t erdbeerhannah:latest`
|
||||
@@ -51,16 +55,15 @@ Die App *erdbeerhannah* protokolliert keinerlei Daten. Keine IP-Adressen, keine
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
Version 2, December 2004
|
||||
|
||||
Copyright (C) 2024 Markus Busche; Knorrstr. 16, 24106 Kiel, Germany
|
||||
Copyright (C) 2024 Markus Busche; Knorrstr. 16, 24106 Kiel, Germany
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
Everyone is permitted to copy and distribute verbatim or modified
|
||||
copies of this license document, and changing it is allowed as long
|
||||
as the name is changed.
|
||||
|
||||
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
```
|
||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||
```
|
||||
|
||||
|
33
app.py
33
app.py
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
import time
|
||||
import logging
|
||||
from flask import Flask, render_template, request, session, send_from_directory
|
||||
from flask import Flask, render_template, request, session, send_from_directory, g
|
||||
from flask_bootstrap import Bootstrap
|
||||
|
||||
app = Flask(__name__)
|
||||
@@ -14,10 +15,10 @@ handler = logging.StreamHandler()
|
||||
handler.setFormatter(formatter)
|
||||
app.logger.setLevel(logging.DEBUG)
|
||||
app.logger.addHandler(handler)
|
||||
app.logger.info('Starting erdbeerhannah v1.0.5')
|
||||
|
||||
Bootstrap(app)
|
||||
|
||||
version = "1.0.9/2024-05-28"
|
||||
postcounter = 0
|
||||
gesamtwert = 0
|
||||
change = 0
|
||||
@@ -30,9 +31,28 @@ item4 = 0
|
||||
item5 = 0
|
||||
item6 = 0
|
||||
|
||||
app.logger.info('Starting erdbeerhannah ' + version)
|
||||
|
||||
# https://code-maven.com/flask-display-elapsed-time
|
||||
@app.before_request
|
||||
def before_request():
|
||||
g.request_start_time = time.time()
|
||||
g.request_time = lambda: "%.4fs" % (time.time() - g.request_start_time)
|
||||
|
||||
# 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
|
||||
global gesamtwert, item1, item2, item3, item4, item5, item6, sum, givenfloat, change, given, background, postcounter, version
|
||||
background = "bg-white"
|
||||
|
||||
if request.method == "POST":
|
||||
@@ -65,15 +85,15 @@ def index():
|
||||
sum = str(gesamtwert) + "0"
|
||||
|
||||
# summarize items
|
||||
if wertfloat == 5.8:
|
||||
if wertfloat == 4.9:
|
||||
item1 += 1
|
||||
if wertfloat == 4.8:
|
||||
item2 += 1
|
||||
if wertfloat == 3.3:
|
||||
item3 += 1
|
||||
if wertfloat == 8.8:
|
||||
if wertfloat == 4.5:
|
||||
item4 += 1
|
||||
if wertfloat == 5.5:
|
||||
if wertfloat == 5:
|
||||
item5 += 1
|
||||
if wertfloat == .2:
|
||||
item6 += 1
|
||||
@@ -113,6 +133,7 @@ def index():
|
||||
item5=session.get('item5', 0),
|
||||
item6=session.get('item6', 0),
|
||||
background=background,
|
||||
version=version,
|
||||
)
|
||||
|
||||
@app.route('/favicon.ico')
|
||||
|
@@ -7,8 +7,8 @@
|
||||
<meta http-equiv="Pragma" content="cache" />
|
||||
<meta name="robots" content="INDEX,FOLLOW" />
|
||||
<meta http-equiv="content-Language" content="de" />
|
||||
<meta name="description" content="Viele Erdbeerstände in Deutschland haben keine elektronische Kasse. Aufgrund der geringen Zahl unterschiedlicher Artikel bietet sich diese simple Rechner-App an, die bis zu sechs verschiedene Artikel in unterschiedlicher Stückzahl summieren kann." />
|
||||
<meta name="keywords" content="rechner calculator bargeld artikel obst erdbeeren spargel kirschen verkaufsstand wechselgeld" />
|
||||
<meta name="description" content="Viele Obststände in Deutschland haben keine elektronische Kasse. Aufgrund der geringen Zahl unterschiedlicher Artikel bietet sich diese simple Rechner-App an, die bis zu sechs verschiedene Artikel in unterschiedlicher Stückzahl summieren kann." />
|
||||
<meta name="keywords" content="rechner kasse calculator bargeld artikel obst erdbeeren spargel kirschen verkaufsstand wechselgeld kostenlos opensource werbefrei" />
|
||||
<meta name="author" content="Markus Busche" />
|
||||
<meta name="publisher" content="Markus Busche" />
|
||||
<meta name="copyright" content="2024 Markus Busche" />
|
||||
@@ -77,23 +77,23 @@
|
||||
$(document).ready(function(){
|
||||
$('[data-toggle="tooltip"]').tooltip();
|
||||
});
|
||||
</script>
|
||||
</script>
|
||||
<body>
|
||||
<div class="container-fluid table-container">
|
||||
<table class="table table-bordered">
|
||||
<form method="post">
|
||||
<tbody>
|
||||
<tr class="bold-row">
|
||||
<td colspan="3">erdbeerkasse 🍓💶</td>
|
||||
<td colspan="3">erdbeerrechner 🍓💶</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button type="submit" name="wert" value="5.8" data-toggle="tooltip" data-placement="top" title="500g Erdbeeren" class="btn btn-xl btn-primary custom-btn-size">🍓 5,80€ ({{ item1 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="4.9" data-toggle="tooltip" data-placement="top" title="500g Erdbeeren" class="btn btn-xl btn-primary custom-btn-size">🍓 4,90€ ({{ item1 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="4.8" data-toggle="tooltip" data-placement="top" title="Marmelade groß" class="btn btn-xl btn-danger custom-btn-size">🫙🫙 4,80€ ({{ item2 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="3.3" data-toggle="tooltip" data-placement="top" title="Marmelade klein" class="btn btn-xl btn-danger custom-btn-size">🫙 3,30€ ({{ item3 }})</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><button type="submit" name="wert" value="8.8" data-toggle="tooltip" data-placement="top" title="Saft 5l" class="btn btn-xl btn-warning custom-btn-size">🧃🧃 8,80€ ({{ item4 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="5.5" data-toggle="tooltip" data-placement="top" title="Saft 3l" class="btn btn-xl btn-warning custom-btn-size">🧃 5,50€ ({{ item5 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="5.0" data-toggle="tooltip" data-placement="top" title="500g Kirschen" class="btn btn-xl btn-warning custom-btn-size">🍒 5,00€ ({{ item4 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="4.5" data-toggle="tooltip" data-placement="top" title="500g Himbeeren" class="btn btn-xl btn-warning custom-btn-size">🫐 4,50€ ({{ item5 }})</button></td>
|
||||
<td><button type="submit" name="wert" value="0.2" data-toggle="tooltip" data-placement="top" title="Tragetasche" class="btn btn-xl btn-success custom-btn-size">🛍️ 0,20€ ({{ item6 }})</button></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -111,8 +111,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">Made with ♥️, marmalade and zero knowledge in <a href="https://kiel-sailing-city.de/" target="_blank">Kiel Strawberry City.</a><br>
|
||||
Version: 1.0.5/2024-05-27<br>
|
||||
<a href="https://gitea.elpatron.me/elpatron/erdbeerhannah/src/branch/main/README.md" target="_blank">Weitere Infos</a></td>
|
||||
Version: {{ version }} ({{ g.request_time() }}), <a href="https://gitea.elpatron.me/elpatron/erdbeerhannah/src/branch/main/README.md" target="_blank">Infos</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</form>
|
||||
|
Reference in New Issue
Block a user