Fetenzentrale/test.py

85 lines
2.6 KiB
Python

import json
import subprocess
from flask import redirect, request, Flask, render_template, url_for
from datetime import datetime, timedelta
app = Flask(__name__)
activeAlarms = list()
previousAlarms = list()
logs = list()
def preprocess():
logsFile = json.load(open("./logs.json"))
alarmsFile = json.load(open("./alarms.json"))
for alarm in alarmsFile:
if datetime.strptime(alarm['datetime'],"%d.%m.%Y %H:%M") <= datetime.now()-timedelta(minutes=2):
previousAlarms.append(alarm)
else:
activeAlarms.append(alarm)
for log in logsFile:
logs.append(log)
@app.route("/", methods=('GET', 'POST'))
def index():
# reload sendet alle paramenter neu und die werden neu drangeflanscht
if len(logs) <= 0:
preprocess()
return render_template('index.html', logs = logs, alarms = activeAlarms, previousAlarms=previousAlarms)
@app.route('/setAlarm', methods=('GET', 'POST'))
def setAlarm():
if request.method == 'POST':
time = datetime.fromisoformat(request.form['datetime']).strftime("%d.%m.%Y %H:%M")
content = request.form['alarmMessage']
activeAlarms.append({'datetime':time,'message':content})
allAlarms = activeAlarms+previousAlarms
with open('alarms.json', 'w') as f:
json.dump(allAlarms, f, indent=2)
# Closing file
f.close()
return redirect(url_for('index'))
@app.route('/sendLog', methods=('GET', 'POST'))
def sendLog():
if request.method == 'POST':
content = request.form['logMessage']
log = {'datetime':datetime.now().strftime("%d.%m.%Y %H:%M"),'message':content}
logs.append(log)
with open('logs.json', 'w') as f:
json.dump(logs, f, indent=2)
# Closing file
f.close()
return redirect(url_for('index'))
@app.route('/alarms', methods=('GET','POST'))
def alarm():
if request.method == 'GET':
return json.dumps(activeAlarms)
if request.method == 'POST':
print('ALARM')
subprocess.call(['mpv','./alarm.mp3'], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
data = json.loads(request.data.decode('UTF-8'))
previousAlarms.append(data)
activeAlarms.remove(data)
return redirect(url_for('index'))
@app.route('/processAlarm')
def processAlarm():
return render_template('alarms.html', alarms=activeAlarms)
@app.route('/processpAlarm')
def processpAlarm():
return render_template('palarms.html', previousAlarms=previousAlarms)
@app.route("/refresh")
def refresh():
return render_template('index.html', logs = logs, alarms = activeAlarms, previousAlarms=previousAlarms)