alarms können gelöscht werden, checkboxen vorbereitet
This commit is contained in:
parent
58f7ac960d
commit
4314f97ee3
34
app.py
34
app.py
|
@ -6,10 +6,11 @@ from datetime import datetime, timedelta
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
activeAlarms = list()
|
activeAlarms = dict()
|
||||||
previousAlarms = list()
|
previousAlarms = dict()
|
||||||
logs = list()
|
logs = list()
|
||||||
preprocessed = False
|
preprocessed = False
|
||||||
|
alarmIndex = 0
|
||||||
|
|
||||||
def preprocess():
|
def preprocess():
|
||||||
|
|
||||||
|
@ -25,11 +26,14 @@ def preprocess():
|
||||||
json.dump(logsFile, open('logs.json','w'), indent=2)
|
json.dump(logsFile, open('logs.json','w'), indent=2)
|
||||||
# schreib alle alarme im File in previousAlarms, wenn sie älter als 2 mins sind
|
# schreib alle alarme im File in previousAlarms, wenn sie älter als 2 mins sind
|
||||||
# alle anderen in active alarms
|
# alle anderen in active alarms
|
||||||
for alarm in alarmsFile:
|
for (alarm) in alarmsFile:
|
||||||
if datetime.strptime(alarm['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2):
|
if datetime.strptime(alarmsFile[alarm]['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2):
|
||||||
previousAlarms.append(alarm)
|
previousAlarms[alarm] = alarmsFile[alarm]
|
||||||
else:
|
else:
|
||||||
activeAlarms.append(alarm)
|
activeAlarms[alarm] = alarmsFile[alarm]
|
||||||
|
global alarmIndex
|
||||||
|
if(int(alarm)>alarmIndex):
|
||||||
|
alarmIndex = int(alarm)
|
||||||
# lies alle log aus dem file ein
|
# lies alle log aus dem file ein
|
||||||
for log in logsFile:
|
for log in logsFile:
|
||||||
logs.append(log)
|
logs.append(log)
|
||||||
|
@ -59,7 +63,9 @@ def setAlarm():
|
||||||
if time<datetime.now():
|
if time<datetime.now():
|
||||||
time = time + timedelta(days=1)
|
time = time + timedelta(days=1)
|
||||||
content = request.form['alarmMessage']
|
content = request.form['alarmMessage']
|
||||||
activeAlarms.append({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content})
|
global alarmIndex
|
||||||
|
alarmIndex += 1
|
||||||
|
activeAlarms[alarmIndex]({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content})
|
||||||
|
|
||||||
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher
|
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher
|
||||||
allAlarms = activeAlarms+previousAlarms
|
allAlarms = activeAlarms+previousAlarms
|
||||||
|
@ -86,6 +92,7 @@ def sendLog():
|
||||||
|
|
||||||
@app.route('/alarms', methods=('GET','POST'))
|
@app.route('/alarms', methods=('GET','POST'))
|
||||||
def alarm():
|
def alarm():
|
||||||
|
# needs update to dict
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return json.dumps(activeAlarms)
|
return json.dumps(activeAlarms)
|
||||||
|
|
||||||
|
@ -97,6 +104,15 @@ def alarm():
|
||||||
activeAlarms.remove(data)
|
activeAlarms.remove(data)
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
@app.route('/deletealarm', methods=('GET','POST'))
|
||||||
|
def deleteAlarm():
|
||||||
|
if request.method == 'POST':
|
||||||
|
id = request.data.decode('UTF-8')
|
||||||
|
alarm = activeAlarms[id]
|
||||||
|
previousAlarms[id] = alarm
|
||||||
|
activeAlarms.pop(id)
|
||||||
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
@app.route('/upload', methods=('GET','POST'))
|
@app.route('/upload', methods=('GET','POST'))
|
||||||
def upload():
|
def upload():
|
||||||
# if upload successful back to index
|
# if upload successful back to index
|
||||||
|
@ -110,7 +126,9 @@ def upload():
|
||||||
if time<datetime.now():
|
if time<datetime.now():
|
||||||
time = time + timedelta(days=1)
|
time = time + timedelta(days=1)
|
||||||
content = alarm["message"]
|
content = alarm["message"]
|
||||||
activeAlarms.append({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content})
|
global alarmIndex
|
||||||
|
alarmIndex += 1
|
||||||
|
activeAlarms[alarmIndex] = {'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content}
|
||||||
|
|
||||||
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher
|
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher
|
||||||
with open('alarms.json', 'w') as f:
|
with open('alarms.json', 'w') as f:
|
||||||
|
|
|
@ -1,18 +1,27 @@
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"type": "both",
|
||||||
"time": "20:30",
|
"time": "20:30",
|
||||||
"message": "Akkuwechsel"
|
"message": "Akkuwechsel"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "alarm",
|
||||||
"time": "21:00",
|
"time": "21:00",
|
||||||
"message": "Feteneröffnung"
|
"message": "Feteneröffnung"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "alarm",
|
||||||
"time": "02:30",
|
"time": "02:30",
|
||||||
"message": "Halber Preis"
|
"message": "Halber Preis"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"type": "alarm",
|
||||||
"time": "03:00",
|
"time": "03:00",
|
||||||
"message": "Fete vorbei"
|
"message": "Fete vorbei"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "checkbox",
|
||||||
|
"time": "20:30",
|
||||||
|
"message": "alle T-Shirts ausgegeben"
|
||||||
}
|
}
|
||||||
]
|
]
|
|
@ -1,6 +1,6 @@
|
||||||
<h3>Upcoming Alarms</h3>
|
<h3>Upcoming Alarms</h3>
|
||||||
{% for alarm in alarms %}
|
{% for alarm in alarms %}
|
||||||
<div>
|
<div>
|
||||||
{{ alarm.datetime }}: {{ alarm.message }}
|
{{ alarms[alarm].datetime }}: {{ alarms[alarm].message }} <input style="text-align: right;" type="button" value="❌" onclick="deleteAlarm({{alarm}})"/>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
|
@ -18,15 +18,15 @@
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="navbarNav">
|
<div class="collapse navbar-collapse" id="navbarNav">
|
||||||
<ul class="navbar-nav">
|
<ul class="navbar-nav">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{{url_for('upload')}}">Upload</a>
|
<a class="nav-link" href="{{url_for('upload')}}">Upload</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{{url_for('help')}}">Hilfe</a>
|
<a class="nav-link" href="{{url_for('help')}}">Hilfe</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{{url_for('about')}}">About</a>
|
<a class="nav-link" href="{{url_for('about')}}">About</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
@ -22,6 +22,7 @@ Die Datei zum hochladen, sollte folgenden Aufbau haben:
|
||||||
<pre>
|
<pre>
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
"type": "alarm" | "checkbox" | "both"
|
||||||
"time": "HH:MM",
|
"time": "HH:MM",
|
||||||
"message": "Alarm-Text"
|
"message": "Alarm-Text"
|
||||||
},
|
},
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
<h3>Anstehende Alarme</h3>
|
<h3>Anstehende Alarme</h3>
|
||||||
{% for alarm in alarms %}
|
{% for alarm in alarms %}
|
||||||
<div>
|
<div>
|
||||||
{{ alarm.datetime }}: {{ alarm.message }}
|
{{ alarms[alarm].datetime }}: {{ alarms[alarm].message }} <input style="text-align: right;" type="button" value="❌" onclick="deleteAlarm({{alarm}})"/>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -76,14 +76,37 @@
|
||||||
upcomingAlarms.innerHTML = html
|
upcomingAlarms.innerHTML = html
|
||||||
})
|
})
|
||||||
fetch("/processpAlarm", {
|
fetch("/processpAlarm", {
|
||||||
method: "GET"
|
method: "GET"
|
||||||
}).then(response => {
|
}).then(response => {
|
||||||
return response.text();
|
return response.text();
|
||||||
})
|
})
|
||||||
.then(html => {
|
.then(html => {
|
||||||
previousAlarms.innerHTML = html
|
previousAlarms.innerHTML = html
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
async function deleteAlarm(id){
|
||||||
|
const response = await fetch("http://127.0.0.1:5000/deletealarm", {
|
||||||
|
method: "POST",
|
||||||
|
body: id,
|
||||||
|
});
|
||||||
|
fetch("/processAlarm", {
|
||||||
|
method: "GET"
|
||||||
|
}).then(response => {
|
||||||
|
return response.text();
|
||||||
|
})
|
||||||
|
.then(html => {
|
||||||
|
upcomingAlarms.innerHTML = html
|
||||||
|
})
|
||||||
|
fetch("/processpAlarm", {
|
||||||
|
method: "GET"
|
||||||
|
}).then(response => {
|
||||||
|
return response.text();
|
||||||
|
})
|
||||||
|
.then(html => {
|
||||||
|
previousAlarms.innerHTML = html
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
function checkAlarms(){
|
function checkAlarms(){
|
||||||
for(var i = 0; i < alarms.length; i++){
|
for(var i = 0; i < alarms.length; i++){
|
||||||
|
|
||||||
|
@ -106,7 +129,7 @@
|
||||||
</script>
|
</script>
|
||||||
{% for alarm in previousAlarms %}
|
{% for alarm in previousAlarms %}
|
||||||
<div>
|
<div>
|
||||||
{{ alarm.datetime }}: {{ alarm.message }}
|
{{ previousAlarms[alarm].datetime }}: {{ previousAlarms[alarm].message }}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<h3>Previous Alarms</h3>
|
<h3>Previous Alarms</h3>
|
||||||
{% for alarm in previousAlarms %}
|
{% for alarm in previousAlarms %}
|
||||||
<div>
|
<div>
|
||||||
{{ alarm.datetime }}: {{ alarm.message }}
|
{{ previousAlarms[alarm].datetime }}: {{ previousAlarms[alarm].message }}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
Loading…
Reference in New Issue