Compare commits
15 Commits
90eccad3f7
...
main
Author | SHA1 | Date | |
---|---|---|---|
1a12dcd1d0 | |||
|
9f7bc8086c | ||
|
833287222d | ||
|
e2cdaf059a | ||
|
b2e8192a2d | ||
|
3a15183094 | ||
|
08d668c984 | ||
|
24e9d83a52 | ||
|
4d7e352220 | ||
|
abc4403373 | ||
|
57930c374a | ||
|
9318f0b25c | ||
|
02a9df95b5 | ||
|
9ad4038d6b | ||
|
c68fcc56f9 |
@@ -1,6 +1,6 @@
|
|||||||
# erdbeerhannah
|
# erdbeerhannah
|
||||||
|
|
||||||
*Simple Rechner-App für Erdbeerstände*
|
*Simple Rechner-App für Erdbeerstände (und ähnliche Verkausstellen)*
|
||||||
|
|
||||||
## Motivation
|
## 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.
|
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*.
|
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:
|
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 image build -t erdbeerhannah:latest .`
|
||||||
|
|
||||||
`docker run -p 9090:90 -t erdbeerhannah:latest`
|
`docker run -p 9090:90 -t erdbeerhannah:latest`
|
||||||
@@ -62,5 +66,4 @@ DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
|||||||
|
|
||||||
0. You just DO WHAT THE FUCK YOU WANT TO.
|
0. You just DO WHAT THE FUCK YOU WANT TO.
|
||||||
```
|
```
|
||||||
```
|
|
||||||
|
|
||||||
|
30
app.py
30
app.py
@@ -1,6 +1,7 @@
|
|||||||
import os
|
import os
|
||||||
|
import time
|
||||||
import logging
|
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
|
from flask_bootstrap import Bootstrap
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
@@ -17,7 +18,7 @@ app.logger.addHandler(handler)
|
|||||||
|
|
||||||
Bootstrap(app)
|
Bootstrap(app)
|
||||||
|
|
||||||
version = "1.0.5"
|
version = "1.0.9/2024-05-28"
|
||||||
postcounter = 0
|
postcounter = 0
|
||||||
gesamtwert = 0
|
gesamtwert = 0
|
||||||
change = 0
|
change = 0
|
||||||
@@ -30,7 +31,24 @@ item4 = 0
|
|||||||
item5 = 0
|
item5 = 0
|
||||||
item6 = 0
|
item6 = 0
|
||||||
|
|
||||||
app.logger.info('Starting erdbeerhannah v' + version)
|
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"])
|
@app.route("/", methods=["GET", "POST"])
|
||||||
def index():
|
def index():
|
||||||
@@ -67,15 +85,15 @@ def index():
|
|||||||
sum = str(gesamtwert) + "0"
|
sum = str(gesamtwert) + "0"
|
||||||
|
|
||||||
# summarize items
|
# summarize items
|
||||||
if wertfloat == 5.8:
|
if wertfloat == 4.9:
|
||||||
item1 += 1
|
item1 += 1
|
||||||
if wertfloat == 4.8:
|
if wertfloat == 4.8:
|
||||||
item2 += 1
|
item2 += 1
|
||||||
if wertfloat == 3.3:
|
if wertfloat == 3.3:
|
||||||
item3 += 1
|
item3 += 1
|
||||||
if wertfloat == 8.8:
|
if wertfloat == 4.5:
|
||||||
item4 += 1
|
item4 += 1
|
||||||
if wertfloat == 5.5:
|
if wertfloat == 5:
|
||||||
item5 += 1
|
item5 += 1
|
||||||
if wertfloat == .2:
|
if wertfloat == .2:
|
||||||
item6 += 1
|
item6 += 1
|
||||||
|
@@ -7,8 +7,8 @@
|
|||||||
<meta http-equiv="Pragma" content="cache" />
|
<meta http-equiv="Pragma" content="cache" />
|
||||||
<meta name="robots" content="INDEX,FOLLOW" />
|
<meta name="robots" content="INDEX,FOLLOW" />
|
||||||
<meta http-equiv="content-Language" content="de" />
|
<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="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 calculator bargeld artikel obst erdbeeren spargel kirschen verkaufsstand wechselgeld" />
|
<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="author" content="Markus Busche" />
|
||||||
<meta name="publisher" content="Markus Busche" />
|
<meta name="publisher" content="Markus Busche" />
|
||||||
<meta name="copyright" content="2024 Markus Busche" />
|
<meta name="copyright" content="2024 Markus Busche" />
|
||||||
@@ -87,13 +87,13 @@
|
|||||||
<td colspan="3">erdbeerrechner 🍓💶</td>
|
<td colspan="3">erdbeerrechner 🍓💶</td>
|
||||||
</tr>
|
</tr>
|
||||||
<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="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>
|
<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>
|
||||||
<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.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="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="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>
|
<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>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -111,8 +111,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
<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>
|
<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: {{ version }}/2024-05-27<br>
|
Version: {{ version }} ({{ g.request_time() }}), <a href="https://gitea.elpatron.me/elpatron/erdbeerhannah/src/branch/main/README.md" target="_blank">Infos</a></td>
|
||||||
<a href="https://gitea.elpatron.me/elpatron/erdbeerhannah/src/branch/main/README.md" target="_blank">Weitere Infos</a></td>
|
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</form>
|
</form>
|
||||||
|
Reference in New Issue
Block a user