upload file for predetermined alarms, closes #4
This commit is contained in:
parent
887c9f6635
commit
58f7ac960d
29
app.py
29
app.py
|
@ -1,6 +1,6 @@
|
||||||
import json
|
import json
|
||||||
import subprocess
|
import subprocess
|
||||||
from flask import redirect, request, Flask, render_template, url_for
|
from flask import flash, redirect, request, Flask, render_template, url_for
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,6 +96,33 @@ def alarm():
|
||||||
previousAlarms.append(data)
|
previousAlarms.append(data)
|
||||||
activeAlarms.remove(data)
|
activeAlarms.remove(data)
|
||||||
return redirect(url_for('index'))
|
return redirect(url_for('index'))
|
||||||
|
|
||||||
|
@app.route('/upload', methods=('GET','POST'))
|
||||||
|
def upload():
|
||||||
|
# if upload successful back to index
|
||||||
|
# else show error und bleib auf der Seite
|
||||||
|
if request.method == 'POST':
|
||||||
|
# try:
|
||||||
|
data = json.load(request.files['alarmFile'].stream)
|
||||||
|
for alarm in data:
|
||||||
|
print(alarm)
|
||||||
|
time = datetime.combine(datetime.today(),datetime.strptime(alarm["time"], "%H:%M").time())
|
||||||
|
if time<datetime.now():
|
||||||
|
time = time + timedelta(days=1)
|
||||||
|
content = alarm["message"]
|
||||||
|
activeAlarms.append({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content})
|
||||||
|
|
||||||
|
# ja, wir schreiben einfach das ganze File neu, ist aber einfacher
|
||||||
|
with open('alarms.json', 'w') as f:
|
||||||
|
json.dump(activeAlarms, f, indent=2)
|
||||||
|
|
||||||
|
# Closing file
|
||||||
|
f.close()
|
||||||
|
return redirect(url_for('index'))
|
||||||
|
# except:
|
||||||
|
# print("error :(")
|
||||||
|
# return render_template('upload.html', uploadFailed=True)
|
||||||
|
return render_template('upload.html', uploadFailed=True)
|
||||||
|
|
||||||
@app.route('/processAlarm')
|
@app.route('/processAlarm')
|
||||||
def processAlarm():
|
def processAlarm():
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "20:30",
|
||||||
|
"message": "Akkuwechsel"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "21:00",
|
||||||
|
"message": "Feteneröffnung"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "02:30",
|
||||||
|
"message": "Halber Preis"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "03:00",
|
||||||
|
"message": "Fete vorbei"
|
||||||
|
}
|
||||||
|
]
|
|
@ -18,10 +18,13 @@
|
||||||
</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">
|
||||||
|
<a class="nav-link" href="{{url_for('upload')}}">Upload</a>
|
||||||
|
</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 active">
|
<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>
|
||||||
|
|
|
@ -6,18 +6,39 @@
|
||||||
<h2>Erste Schritte</h2>
|
<h2>Erste Schritte</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Schreib was ins log</li>
|
<li>Schreib was ins log</li>
|
||||||
|
<li>Lade deine vor-eingestellen Alarme hoch</li>
|
||||||
<li>Trag deinen ersten Alarm ein</li>
|
<li>Trag deinen ersten Alarm ein</li>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Reihenfolge ist relevant, sonst gibt's einen doppelten Alarm, sobald aus Gründen™ neu geladen wird</li>
|
<li>Schau, dass dein Endgerät nicht stumm geschaltet ist</li>
|
||||||
</ul>
|
</ul>
|
||||||
<li>Das war's auch schon</li>
|
<li>Das war's auch schon</li>
|
||||||
<li>In den Logs, siehst du die bereit geschriebenen Log-Einträge</li>
|
<li>In den Logs, siehst du die bereit geschriebenen Log-Einträge</li>
|
||||||
<li>Die anstehenden Alarme sind Alarme in der Zukunft, bei einem Neustart des Servers werden alle Alarme in der Zukunft <b>und</b> alle Alarme, die in den letzten 2 Minuten stattfinden sollten/stattgefunden haben.</li>
|
<li>Die anstehenden Alarme sind Alarme in der Zukunft, bei einem Neustart des Servers werden alle Alarme in der Zukunft <b>und</b> alle Alarme, die in den letzten 2 Minuten stattfinden sollten/stattgefunden haben.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<h2>How-To</h2>
|
<h2>How-To</h2>
|
||||||
|
<h5><u>Alarme hochladen</u></h5>
|
||||||
|
<p>
|
||||||
|
Die Datei zum hochladen, sollte folgenden Aufbau haben:
|
||||||
|
<pre>
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"time": "HH:MM",
|
||||||
|
"message": "Alarm-Text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"time": "HH:MM",
|
||||||
|
"message": "Alarm-Text"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
</pre>
|
||||||
|
Es braucht eine Uhrzeit und eine Alarm Nachricht.
|
||||||
|
Als Datum wird heute genommen, außer der Zeitpunkt liegt in der Vergangenheit.
|
||||||
|
Dann wird der Alarm morgen zur angegeben Uhrzeit eingetragen.<br>
|
||||||
|
Falls ein separates Datumsfeld gewünscht ist, sagt Bescheid, ich sehe da ehrlich gesagt noch keine Notwendikeit.
|
||||||
|
</p>
|
||||||
<h5><u>Alarm eintragen</u></h5>
|
<h5><u>Alarm eintragen</u></h5>
|
||||||
<p>
|
<p>
|
||||||
Es braucht eine Uhrzeit und eine alarm Nachricht. Wenn kein Datum eingetragen ist, wird heute genommen,
|
Es braucht eine Uhrzeit und eine Alarm Nachricht. Wenn kein Datum eingetragen ist, wird heute genommen,
|
||||||
außer der Zeitpunkt liegt in der Vergangenheit. Dann wird der Alarm morgen zur angegeben Uhrzeit eingetragen.
|
außer der Zeitpunkt liegt in der Vergangenheit. Dann wird der Alarm morgen zur angegeben Uhrzeit eingetragen.
|
||||||
</p>
|
</p>
|
||||||
<h5><u>Log eintragen</u></h5>
|
<h5><u>Log eintragen</u></h5>
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h1>{% block title %} Upload {% endblock %}</h1>
|
||||||
|
<div>
|
||||||
|
|
||||||
|
Akzeptiert .json Dateien. Für den Aufbau der Datei, schau in der Hilfe.
|
||||||
|
</pre>
|
||||||
|
</div>
|
||||||
|
<form method="post" action="/upload" enctype="multipart/form-data">
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="upload" >
|
||||||
|
<input type="file" name="alarmFile"
|
||||||
|
class="form-control"
|
||||||
|
value="{{ request.form['alarmFile'] }}"style="padding: 2mm; height: 1.2cm;"
|
||||||
|
accept=".json"></input>
|
||||||
|
<input type="submit" id="uploadAlarm" value="Hochladen" style="margin: 2mm;"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
{% endblock %}
|
Loading…
Reference in New Issue