From 5e3a3a82723dc2110051b755a7d02c6f3df4c4f4 Mon Sep 17 00:00:00 2001 From: Anika Date: Fri, 29 Mar 2024 16:45:44 +0100 Subject: [PATCH] =?UTF-8?q?Alarm=20einf=C3=BCgen=20funktioniert=20wieder,?= =?UTF-8?q?=20Alarms=20sind=20jetzt=20sortiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 81 ++++++++++++++++++++++++++++--------------- static/css/style.css | 8 +++++ templates/alarms.html | 2 +- templates/help.html | 18 +++++++--- templates/todo.html | 11 +++++- templates/upload.html | 5 ++- 6 files changed, 90 insertions(+), 35 deletions(-) diff --git a/app.py b/app.py index fdf51a6..775a151 100644 --- a/app.py +++ b/app.py @@ -41,8 +41,11 @@ def preprocess(): for todo in todoFile: todos_dict[todo] = todoFile[todo] if todoFile[todo]['done'] and todo in activeAlarms: - previousAlarms[id] = activeAlarms[id] - activeAlarms.pop(id) + previousAlarms[todo] = activeAlarms[todo] + activeAlarms.pop(todo) + elif not todoFile[todo]['done'] and todo in previousAlarms: + activeAlarms[todo] = previousAlarms[todo] + previousAlarms.pop(todo) # lies alle log aus dem file ein for log in logsFile: logs.append(log) @@ -54,8 +57,13 @@ def preprocess(): def index(): if not preprocessed: preprocess() + sorted_alarms = dict(sorted(activeAlarms.items(), key=lambda x:x[1]['datetime'])) + sorted_prevAlarms = dict(sorted(previousAlarms.items(), key=lambda x:x[1]['datetime'])) - return render_template('index.html', logs = logs, alarms = activeAlarms, previousAlarms=previousAlarms) + + print(sorted_alarms) + + return render_template('index.html', logs = logs, alarms = sorted_alarms, previousAlarms=sorted_prevAlarms) @app.route('/setAlarm', methods=('GET', 'POST')) def setAlarm(): @@ -72,9 +80,9 @@ def setAlarm(): content = request.form['alarmMessage'] global alarmIndex alarmIndex += 1 - activeAlarms[alarmIndex]({'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content}) + activeAlarms[str(alarmIndex)] = {'datetime':datetime.strftime(time,"%d.%m.%Y %H:%M"),'message':content} - allAlarms = activeAlarms+previousAlarms + allAlarms = {**activeAlarms, **previousAlarms} with open('alarms.json', 'w') as f: json.dump(allAlarms, f, indent=2) f.close() @@ -92,6 +100,19 @@ def sendLog(): return redirect(url_for('index')) +@app.route('/sendTodo', methods=('GET', 'POST')) +def sendTodo(): + if request.method == 'POST': + content = request.form['todoMessage'] + global alarmIndex + alarmIndex +=1 + todos_dict[str(alarmIndex)]= {'done':False, 'message':content} + with open('todos.json', 'w') as f: + json.dump(todos_dict, f, indent=2) + f.close() + + return redirect(url_for('todos')) + # sounds the alarm @app.route('/alarms', methods=('GET','POST')) def alarm(): @@ -113,6 +134,8 @@ def deleteAlarm(): alarm = activeAlarms[id] previousAlarms[id] = alarm activeAlarms.pop(id) + if id in todos_dict: + todos_dict[id] = {'done': True, 'message': todos_dict[id]['message']} return redirect(url_for('index')) # invert todo checkbox @@ -137,31 +160,33 @@ def upload(): # if upload successful back to index # else show error und bleib auf der Seite if request.method == 'POST': - data = json.load(request.files['alarmFile'].stream) - for alarm in data: - content = alarm["message"] - global alarmIndex - alarmIndex += 1 - if alarm["type"] != "checkbox": - time = datetime.combine(datetime.today(),datetime.strptime(alarm["time"], "%H:%M").time()) - if timeUpcoming Alarms +

Anstehende Alarme

{% for alarm in alarms %}
{{ alarms[alarm].datetime }}: {{ alarms[alarm].message }} diff --git a/templates/help.html b/templates/help.html index 9c081e7..ce8d65b 100644 --- a/templates/help.html +++ b/templates/help.html @@ -33,9 +33,11 @@ Die Datei zum hochladen, sollte folgenden Aufbau haben: } ] -Alarme/Beides braucht eine Uhrzeit und eine Alarm Nachricht. +Alarme brauchen 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. Todo-Listeneinträge haben keine Uhrzeit.
+Dann wird der Alarm morgen zur angegeben Uhrzeit eingetragen.
+Todo-Listeneinträge haben keine Uhrzeit. Wenn was beides hat, braucht es eine Uhrzeit. +Typ "both": sei dir sicher, dass du die zusammen haben willst. Du kannst weder den Alarm löschen ohne das Todo abzuhaken, noch andersrum.
Falls ein separates Datumsfeld gewünscht ist, sagt Bescheid, ich sehe da ehrlich gesagt noch keine Notwendikeit.

Alarm eintragen
@@ -49,15 +51,23 @@ Schreibe einen Text, drücke Enter, sei glücklich. Nein, du kannst das nicht ko

ToDos

-Todo Listeneinträge können aktuell nicht in der UI erstellt werden. Wahrscheinlich ändere ich das noch. -Ansonsten; abhaken, wenn ein Alarm mit dem ToDo asoziiert ist (über Upload), wird der Alarm automatisch in die vergangenen Alarme geschoben. +Abhaken, wenn ein Alarm mit dem ToDo asoziiert ist (über Upload), wird der Alarm automatisch in die vergangenen Alarme geschoben. Abgehakte ToDos werden grün. +Todos werden automatisch abgehakt, wenn der asoziierte Alarm gelöscht wird.
"Aber Anika, ich bin doof und hab Fetengehirn und ausversehen das falsche abgehakt. Was mach ich denn jetzt?"
Fear not, mein junger Padawan. I got you. Unchecking der Checkbox macht den Alarm wieder zurück.

+

Server-Neustart

+Wenn der Server neu gestartet wird, müssen ein paar Kleinigkeiten beachtet werden. +
    +
  • Es wird generell alles geladen, der Server vergisst wenig
  • +
  • Überprüf die aktiven Alarme, da stehen jetzt potenziell mehr als du willst. Mach das sofort und unmittelbar, + du hast 15s bis das erste Mal ein Alarm aus den letzten 2 Minuten tönen kann
  • +
  • Bestimmt noch was, das ich nicht weiß
  • +

Debugging Hilfe

Wird gefüllt, sobald ich Probleme/Unklarheiten identifiziere oder gesagt bekomme diff --git a/templates/todo.html b/templates/todo.html index beb7ce2..c3b7815 100644 --- a/templates/todo.html +++ b/templates/todo.html @@ -2,7 +2,7 @@ {% block content %}

{% block title %} ToDos {% endblock %}

-
+
{% for todo in todos %}
{% if todos[todo].done%} @@ -13,6 +13,15 @@
{% endfor %}
+
+
+ + + +
+