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 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
|
||||
|
||||
|
||||
|
@ -96,6 +96,33 @@ def alarm():
|
|||
previousAlarms.append(data)
|
||||
activeAlarms.remove(data)
|
||||
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')
|
||||
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>
|
||||
<div class="collapse navbar-collapse" id="navbarNav">
|
||||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{url_for('upload')}}">Upload</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{url_for('help')}}">Hilfe</a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{url_for('about')}}">About</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -6,18 +6,39 @@
|
|||
<h2>Erste Schritte</h2>
|
||||
<ul>
|
||||
<li>Schreib was ins log</li>
|
||||
<li>Lade deine vor-eingestellen Alarme hoch</li>
|
||||
<li>Trag deinen ersten Alarm ein</li>
|
||||
<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>
|
||||
<li>Das war's auch schon</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>
|
||||
</ul>
|
||||
<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>
|
||||
<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.
|
||||
</p>
|
||||
<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