From 0b9b781fef6857fd95800d1e9a06a92e73d22505 Mon Sep 17 00:00:00 2001 From: sqozz Date: Fri, 30 Jun 2017 21:34:32 +0200 Subject: [PATCH] Make ampel aware of the order in bearbeiter.txt Technically this commit makes ampel way more fragile. It now uses an array to store each employee and identifies employees now by the index of this array. All this requires everything to be in order (e.g. the dropdown in the login - if this is out of order, then login results in another user than the displayed one). This was just a simple solution which works way to good. An alternative whould be of cause another entry in the previously used dict which shows an index. --- ampel.py | 38 +++++++++++++++++++++++++------------- assets/templates/login.tpl | 4 ++-- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/ampel.py b/ampel.py index 4f24b57..5861152 100755 --- a/ampel.py +++ b/ampel.py @@ -3,7 +3,6 @@ import bottle import json from bottle import route, post, run, template, static_file, request, response, redirect import sqlite3 -import pdb @route("/") def index(): @@ -13,7 +12,8 @@ def index(): def login(): global employees if request.get_cookie("employeeId") is None: - return template("login", employees=sorted(employees.items(), key=lambda entry: entry[0])) + return template("login", employees=employees) + #return template("login", employees=sorted(employees.items(), key=lambda entry: entry[0])) else: redirect("/manage") @@ -21,31 +21,43 @@ def login(): def loginUser(): global employees employeeId = request.forms.get("employeeId") - employee = employees[employeeId] - response.set_cookie("employeeId", employeeId, max_age=60*60*24*365*10) + response.set_cookie("employeeId", employeeId , max_age=60*60*24*365*10) redirect("/manage") +def loggedIn(): + try: + employeeId = int(request.get_cookie("employeeId")) + except ValueError: + employeeId = None + if employeeId is None or employeeId > len(employees) or employeeId < 0: + response.set_cookie("employeeId", "") #clear cookie + redirect("/login") + else: + return employeeId + @post("/logout") def logout(): + employeeId = loggedIn() + if employeeId >= 0: + global employees + loggedOut = list(employees[employeeId]) + loggedOut[2] = False #sets status to not available + employees[employeeId] = loggedOut response.set_cookie("employeeId", "") #clear cookie redirect("/login") @route("/manage") def manage(): global employees - if request.get_cookie("employeeId") is None or request.get_cookie("employeeId") not in employees: - response.set_cookie("employeeId", "") #clear cookie - redirect("/login") - else: - return template("manage", employeeData=employees[request.get_cookie("employeeId")]) + employeeId = loggedIn() + if employeeId >= 0: + return template("manage", employeeData=employees[employeeId]) @post("/setStatus") def setStatus(): - if request.get_cookie("employeeId") is None: - redirect("/login") - else: + employeeId = loggedIn() + if employeeId >= 0: global employees - employeeId = request.get_cookie("employeeId") newStatus = list(employees[employeeId]) newStatus[2] = not newStatus[2] #toggle availability employees[employeeId] = newStatus diff --git a/assets/templates/login.tpl b/assets/templates/login.tpl index 0d3b25b..b758dc5 100644 --- a/assets/templates/login.tpl +++ b/assets/templates/login.tpl @@ -33,8 +33,8 @@
Login für Mitarbeiter: