From 58b8cab0d00a2226f28fc3c3cbf8606ee66ecb81 Mon Sep 17 00:00:00 2001 From: fingadumbledore Date: Tue, 3 Jan 2023 08:52:26 +0100 Subject: [PATCH] argparse --- main.py | 660 +----------------------------------------------------- server.py | 653 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 663 insertions(+), 650 deletions(-) diff --git a/main.py b/main.py index 2ba5c91..0ed589c 100644 --- a/main.py +++ b/main.py @@ -1,653 +1,13 @@ -from flask import Flask, render_template, jsonify, request, session, redirect -from picker import picker as pick -from picker import createChart -import sqlite3 -import os -import time -import qrcode -import shutil -import re -import numpy +import argparse -starttime = 0 -app = Flask(__name__, template_folder='templates/') -date = time.strftime("%d-%m-%Y %H:%M:%S", time.localtime(time.time())) -zeit = time.strftime("%H%M", time.localtime(time.time())) -app.config['SECRET_KEY'] = 'party' -matekiste = 0 +parser = argparse.ArgumentParser( + prog = 'Party Controller', + description = 'Manage Lan parties', + epilog = 'thanks for using') +parser.add_argument('filename') # positional argument +parser.add_argument('-s', '--start') # option that takes a value +parser.add_argument('-l', '--load') -def dbcon(sql): - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - cur.execute(sql) - con.commit() - return sql.fetchall() - -def ipfin(): - datei = open('ip.txt', 'r') - print (datei.read()) - return datei.read() - -def dbcon1(sql): - con = sqlite3.connect("party.db") - cur = con.cursor() - return cur.execute(sql) - - -def uptime(): - time = int(zeit) - uptime = time - starttime - return uptime - - -# log system -def log_server(log): - log = date + " " + log - datei = open('server.log', 'a') - datei.write('\n' + " " + log) - log = date - datei.close() - - -def error_log(error): - error = date + " [ERROR] " + error - datei = open('server.log', 'a') - datei.write('\n' + " " + error) - log = date - datei.close() - - -def problem_log(problem): - problem = date + " [PROBLEM] " + problem - datei = open('server.log', 'a') - datei.write('\n' + " " + problem) - log = date - datei.close() - - -def warning_log(warning): - warning = date + " [WARNING]" + warning - datei = open('server.log', 'a') - datei.write('\n' + " " + warning) - log = date - datei.close() - - -# Materechner Logic -def mate_logik(sorte, anzahl): - if sorte == "Club Mate": - koffeingehalt = 100 - - if sorte == "Mio Mate": - koffeingehalt = 100 - - if sorte == "Flora Mate": - koffeingehalt = 90 - - if sorte == "Mate Mate": - koffeingehalt = 150 - - if sorte == "Buenos Mate": - koffeingehalt = 100 - - if sorte == "1337 Mate": - koffeingehalt = 145 - - if sorte == "Charitea Mate": - koffeingehalt = 15 - - if sorte == "Bionade Mate": - koffeingehalt = 20 - - - ''' - anzahl = anzahl + 1 - koffeingehalt = 0 - match sorte: - case "Mio Mio": - koffeingehalt = ''' - - -# mws = mate wirtschafts system -def mws(kisten): - log_server("mws wurde angefragt") - return mate - - -def sessionBeenden(sessionID): - os.makedirs(sessionID) - -# Qr-code generator# -def create_qr(id): - if not os.path.exists("./static/img/qr.png"): - qip = ipfin() - img = qrcode.make(f'{qip}:80/session/{id}') - type(img) - img.save("./static/img/qr.png") - else: - warning_log("QR-Code ist bereits vorhanden") - - -# Hauptseite -@app.route("/") -def index(): - log_server("called /") - return render_template("index.html") - - -# Neue Nachrichten -@app.route("/get_chat", methods=['POST']) -def get_chat(): - - log_server("called /get_chat") - log_server("called /get_chat with POST") - userID = request.form['userid'] - sessionID = request.form['sessionid'] - message = request.form['message'] - zeit = date - l = f"INSERT INTO seession (sessionname, sesionstatus, seessiontyp) VALUES( \'{sessionID}\', \'{userID}\',\'{message}\', \'{zeit}\');" - log_server("neue Nachricht") - try: - dbcon(l) - log_server("message entered successfully") - except Exception: - error_log("unable to get new Messages") - # account = cursor.fetchone() - return render_template("chat.html") - -@app.route("/get_game_file", methods=['POST']) -def get_game_file(): - log_server("called /get_game_file") - pick() - -@app.route("/get_new_message") -def get_new_message(): - - log_server("called /get_new_message") - return render_template("chat.html") - -@app.route("/message") -def message(): - - log_server("called /message") - return render_template("message.html") - -# planer -@app.route("/get_planer", methods=['POST']) -def get_planer(): - log_server("called /get_planer") - log_server("called /get_planer with POST") - event = request.form['event'] - sessionID = request.form['sessionID'] - zeit = request.form['zeit'] - pfad = "/session/" + sessionID - status = "running" - l = f"INSERT INTO planer VALUES( \'{event}\', \'{zeit}\', \'{sessionID}\',\'{status}\');" - log_server("neues Event") - try: - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - cur.execute(l) - con.commit() - con.close() - log_server("event entered successfully /get_planer") - except Exception: - error_log("unable to insert event") - return redirect(f'/session/{sessionID}') - - -@app.route("/session/") -def _session(id): - #createChart("41", "NFSU2") - log_server(f"called /session/{id}") - con = sqlite3.connect("party.db") - cur = con.cursor() - l = f"SELECT eventname FROM planer WHERE sessionID = \'{id}\' ORDER BY eventzeit;" - eventname = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT eventzeit FROM planer WHERE sessionID = \'{id}\' ORDER BY eventzeit;" - eventzeit = [i[0] for i in cur.execute(l).fetchall()] - #eventtime = re.split(',', eventzeit) - con.commit() - - creator = [i[0] for i in cur.execute("SELECT username FROM user WHERE info = 'Host'").fetchall()] - con.commit() - - l = f"SELECT count(username) FROM user WHERE sessionID = \'{id}\';" - useranzahl = cur.execute(l).fetchall() - - l = f"SELECT matename, mateanzahl FROM mate WHERE sessionID = \'{id}\' ORDER BY mateanzahl;" - mate = cur.execute(l).fetchall() - con.commit() - - l = f"SELECT Spielname FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" - game = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT userID FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" - user = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT Spielaktivität FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" - aktivitaet = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT username FROM user WHERE sessionID = \'{id}\';" - unames = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT userID FROM user WHERE sessionID = \'{id}\';" - uids = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT ZEIT FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" - zeit = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - - l = f"SELECT Punkte FROM pointgame WHERE sessionID = \'{id}\' ORDER BY Punkte;" - p_punkte = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT Spielname FROM pointgame WHERE sessionID = \'{id}\' ORDER BY Punkte;" - p_game = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT Spielaktivität FROM pointgame WHERE sessionID = \'{id}\' ORDER BY Punkte;" - p_aktivitaet = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - - l = f"SELECT userID FROM pointgame WHERE sessionID = \'{id}\'ORDER BY Punkte;" - p_user = [i[0] for i in cur.execute(l).fetchall()] - con.commit() - cur.close() - - - class eventData: - def __init__(self, evn, evz): - self.eventname = evn - self.eventzeit = evz - - class userData: - def __init__(self, us, usid): - self.unames = us - self.uids = usid - - class gameData: - def __init__(self, ga, akt, usr, ze): - self.game = ga - self.aktivitaet = akt - self.user = usr - self.zeit = ze - - class pointgameData: - def __init__(self, ga, akt, usr, pu): - self.p_game = ga - self.p_aktivitaet = akt - self.p_user = usr - self.p_punkte = pu - - gameda = gameData(game, aktivitaet, user, zeit) - pointgameda = pointgameData(p_game, p_aktivitaet, p_user, p_punkte) - eventdata = eventData(eventname, eventzeit) - userdat = eventData(unames, uids) - - return render_template("session.html", - zeit=zeit, - aktivitaet=aktivitaet, - user=user, - eventdata=eventdata, - gameda=gameda, - pointgameda=pointgameda, - userdat=userdat, - game=game, - useranzahl=useranzahl, - creator=creator, - mate=mate, - uids=uids, - unames=unames, - der=uptime()) - - -@app.route("/mate", methods=['POST']) -def mate(): - log_server("called /mate") - - - mateFlaschen = request.form['mateFlaschen'] - sessionId = request.form['sessionID'] - mateSorte = request.form['mateSorte'] - - if mateSorte == "Club Mate" and mateFlaschen == 20: - matekiste + 1 - mws(matekiste) - if mateSorte == "Mio Mio" and mateFlaschen == 12: - matekiste + 1 - mws(matekiste) - if mateSorte == "Flora Mate" and mateFlaschen == 20: - matekiste + 1 - mws(matekiste) - if mateSorte == "Mate Mate" and mateFlaschen == 20: - martekiste + 1 - mws(martekiste) - if mateSorte == "Buenos Mate" and mateFlaschen == 20: - matekiste + 1 - mws(matekiste) - if mateSorte == "Charitea Mate" and mateFlaschen == 12: - matekiste + 1 - mws(matekiste) - if mateSorte == "1337 Mate" and mateFlaschen == 20: - matekiste + 1 - mws(matekiste) - if mateSorte == "Bionade Mate" and mateFlaschen == 20: - martekiste + 1 - mws(martekiste) - - mateSql = f"INSERT INTO mate VALUES (\"{mateSorte}\", \'{mateFlaschen}\', \'{sessionId}\');" - try: - con = sqlite3.connect("party.db") - warning_log("Verbindung mit Datenbank wurde aufgenommen /mate") - cur = con.cursor() - cur.execute(mateSql) - con.commit() - con.close() - - mate_logik(mateSorte, mateFlaschen) - log_server("mate wurde in Datenbank eingefügt") - except sqlite3.Error as e: - error_log(f"error while executing sql: {e}") - return redirect(f'/session/{sessionId}') - - -@app.route("/drink", methods=['POST']) -def drink(): - log_server("called /drink") - - con = sqlite3.connect("party.db") - warning_log("Verbindung mit Datenbank wurde aufgenommen /drink") - cur = con.cursor() - mateFlaschen = request.form['mateFlaschen'] - sessionId = request.form['sessionID'] - mateSorte = request.form['mateSorte'] - - l3 = f"SELECT mateanzahl FROM mate WHERE sessionID = \'{sessionId}\' AND matename = \'{mateSorte}\';" - manzahl = [i[0] for i in cur.execute(l3).fetchall()] - f = [mateFlaschen] - substracted = list() - for intem1, item2 in zip(manzahl, f): - substracted.append(intem1 - item2) - - k = substracted - - - mateSql = f"UPDATE mate SET mateanzahl = \'{k}\' WHERE sessionID = \'{sessionId}\' AND matename = \'{mateSorte}\');" - try: - con = sqlite3.connect("party.db") - warning_log("Verbindung mit Datenbank wurde aufgenommen /drink") - cur = con.cursor() - cur.execute(mateSql) - con.commit() - con.close() - - mate_logik(mateSorte, mateFlaschen) - log_server("mate wurde in Datenbank eingefügt") - except sqlite3.Error as e: - error_log(f"error while executing sql: {e}") - return redirect(f'/session/{sessionId}') - - - -@app.route("/logout") -def logout(): - log_server("called /logout") - user_count = -1 - return render_template("logout.html") - -@app.route("/spiel") -def spiel(): - log_server("called /spiel") - user_count = -1 - return render_template("spiel.html") - -@app.route("/get_spiel") -def get_spiel(): - log_server("called /get_spiel") - return render_template("spielt.html") - - - -@app.route("/signin") -def signin(): - log_server("called /signin") - return render_template("signin.html") - - -@app.route("/password") -def password(): - log_server("called /password") - return render_template("passwort_ver.html") - - -@app.route("/passwd") -def passwd(): - log_server("called /passwd") - return render_template("passwd.html") - - -@app.route("/change") -def change(): - log_server("called /change") - return render_template("changeSession.html") - - -@app.route("/create_session") -def create_session(): - log_server("called /create_session") - return render_template("createSession.html") - - -@app.route("/get_creat_session", methods=['POST']) -def get_creat_session(): - log_server("called /get_creat_session with POST") - Gsessionname = request.form['sessionname'] - GsessionID = request.form['sessionid'] - Gusername = "Host" - Gusertype = "admin" - GuserId = 1 - Gstatus = "online" - l1 = f'INSERT INTO seession VALUES({GsessionID}, \'{Gsessionname}\', \'online\', \'public\');' - print(l1) - log_server("neue Session") - - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - log_server("a") - cur.execute(l1) - - log_server("f") - user_count = +1 - starttime = int(zeit) - create_qr(GsessionID) - try: - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - username = "Host" - usertype = "admin" - userId = 1 - l = f'INSERT INTO user (username, sessionID, info) VALUES (\'{username}\', {GsessionID}, \'{usertype}\');' - cur.execute(l) - con.commit() - con.close() - except e: - warning_log("user admin konnte nicht angelegt werden") - return redirect(f'/session/{GsessionID}') - log_server("session successfully started") - -@app.route("/charts") -def charts(): - log_server("called /charts") - csessionID = request.form['sessionID'] - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - k = f"SELCT COUNT(DISTINCT 'Spielname') FROM game WHERE sessionID = \'{csessionID}\';" - cur.execute(k) - - return redirect(f'/session/{csessionID}') - -@app.route("/login") -def login(): - log_server("called /login") - return render_template("login.html") - - -@app.route("/stopuhr", methods=['POST']) -def stopuhr(): - - log_server("called /stopuhr") - spielName = request.form['spiel'] - art = request.form['art'] - zeit = request.form['zeit'] - userId = request.form['userid'] - sessionId = request.form['sessionID'] - l = f"INSERT INTO game VALUES( \'{sessionId}\', \'{userId}\',\'{spielName}\',\'{art}\', \'{zeit}\');" - try: - warning_log("verbindung mit Datenbank wurde aufgenommen") - dbcon(l) - log_server("time entered successfully /stopuhr") - except Exception: - error_log("unable to run sql /stopuhr") - return redirect(f'/session/{sessionId}') - - -@app.route("/pointGame", methods=['POST']) -def pointgame(): - userId = request.form['userid'] - sessionId = request.form['sessionID'] - l = f"INSERT INTO pointgame VALUES( \'{sessionId}\', \'{userId}\',\'{spielName}\',\'{art}\', \'{punkte}\');" - try: - warning_log("verbindung mit Datenbank wurde aufgenommen") - dbcon(l) - log_server("time entered successfully /pointGame") - except Exception: - error_log("unable to run sql /pointGame") - return redirect(f'/session/{sessionId}') - - - -@app.route("/get_event", methods=['POST']) -def get_event(): - - log_server("called /get_event") - event = request.form['event'] - zeit = request.form['zeit'] - sessionId = request.form['sessionid'] - l = f"INSERT INTO game VALUES( \'{event}\', \'{zeit}\', \'{sessionId}\');" - try: - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - cur.execute(l) - con.commit() - con.close() - log_server("event entered successfully /get_event") - except e: - error_log("unable to run sql /get_event") - return render_template("login.html") - - - -@app.route("/controll") -def controll(): - - log_server("called /controll") - return render_template("controll.html") - - -@app.route("/game") -def game(): - - log_server("called /game") - return render_template("game.html") - - - -@app.route("/rgb") -def rgb(): - - log_server("called /rgb") - return render_template("404.html") - - -@app.route("/get_login", methods=['POST']) -def get_login(): - log_server("called /get_login with POST") - username = request.form['username'] - sessionId = request.form['sessionID'] - userid = request.form['userID'] - l = f"select * from user where userID = \'{userid}\' and username=\'{username}\' and sessionID=\'{sessionId}\';" - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - cur.execute(l) - con.commit() - con.close() - # session['username'] = account['username'] - log_server("loggedin successfully") - return redirect(f'/session/{sessionId}') - - con.close() - - -@app.route("/new", methods=['POST']) -def new(): - log_server("called /new with POST") - username = request.form['username'] - sessionId = request.form['sessionID'] - userId = request.form['sessionID'] - info = "normal" - l = f"INSERT INTO user(username, sessionID, info) VALUES (\'{username}\',\'{sessionId}\',\'{info}\');" - con = sqlite3.connect("party.db") - warning_log("verbindung mit db wurde aufgenommen") - cur = con.cursor() - cur.execute(l) - con.commit() - con.close() - account = True - - # session['username'] = account['username'] - log_server("created new user successfully") - return redirect(f'/session/{sessionId}') - - con.close() - -@app.route("/upload_file", methods=['POST']) -def upload_file(): - log_server("called /upload_file") - file = request.files - print(f"{file=}") - return render_template(f'404.html') - -@app.errorhandler(404) -def page_not_found(e): - error_log("called non-existing page") - # note that we set the 404 status explicitly - return render_template('404.html'), 404 - - -def create_app(config_filename): - app.register_error_handler(404, page_not_found) - log_server("created app") - return app - - -# Use this line to run it localy - -runip = ipfin() -app.run(host=runip, port=80) +args = parser.parse_args() +print(args.filename, args.start, args.load) \ No newline at end of file diff --git a/server.py b/server.py index e69de29..2ba5c91 100644 --- a/server.py +++ b/server.py @@ -0,0 +1,653 @@ +from flask import Flask, render_template, jsonify, request, session, redirect +from picker import picker as pick +from picker import createChart +import sqlite3 +import os +import time +import qrcode +import shutil +import re +import numpy + +starttime = 0 +app = Flask(__name__, template_folder='templates/') +date = time.strftime("%d-%m-%Y %H:%M:%S", time.localtime(time.time())) +zeit = time.strftime("%H%M", time.localtime(time.time())) +app.config['SECRET_KEY'] = 'party' +matekiste = 0 + + +def dbcon(sql): + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + cur.execute(sql) + con.commit() + return sql.fetchall() + +def ipfin(): + datei = open('ip.txt', 'r') + print (datei.read()) + return datei.read() + +def dbcon1(sql): + con = sqlite3.connect("party.db") + cur = con.cursor() + return cur.execute(sql) + + +def uptime(): + time = int(zeit) + uptime = time - starttime + return uptime + + +# log system +def log_server(log): + log = date + " " + log + datei = open('server.log', 'a') + datei.write('\n' + " " + log) + log = date + datei.close() + + +def error_log(error): + error = date + " [ERROR] " + error + datei = open('server.log', 'a') + datei.write('\n' + " " + error) + log = date + datei.close() + + +def problem_log(problem): + problem = date + " [PROBLEM] " + problem + datei = open('server.log', 'a') + datei.write('\n' + " " + problem) + log = date + datei.close() + + +def warning_log(warning): + warning = date + " [WARNING]" + warning + datei = open('server.log', 'a') + datei.write('\n' + " " + warning) + log = date + datei.close() + + +# Materechner Logic +def mate_logik(sorte, anzahl): + if sorte == "Club Mate": + koffeingehalt = 100 + + if sorte == "Mio Mate": + koffeingehalt = 100 + + if sorte == "Flora Mate": + koffeingehalt = 90 + + if sorte == "Mate Mate": + koffeingehalt = 150 + + if sorte == "Buenos Mate": + koffeingehalt = 100 + + if sorte == "1337 Mate": + koffeingehalt = 145 + + if sorte == "Charitea Mate": + koffeingehalt = 15 + + if sorte == "Bionade Mate": + koffeingehalt = 20 + + + ''' + anzahl = anzahl + 1 + koffeingehalt = 0 + match sorte: + case "Mio Mio": + koffeingehalt = ''' + + +# mws = mate wirtschafts system +def mws(kisten): + log_server("mws wurde angefragt") + return mate + + +def sessionBeenden(sessionID): + os.makedirs(sessionID) + +# Qr-code generator# +def create_qr(id): + if not os.path.exists("./static/img/qr.png"): + qip = ipfin() + img = qrcode.make(f'{qip}:80/session/{id}') + type(img) + img.save("./static/img/qr.png") + else: + warning_log("QR-Code ist bereits vorhanden") + + +# Hauptseite +@app.route("/") +def index(): + log_server("called /") + return render_template("index.html") + + +# Neue Nachrichten +@app.route("/get_chat", methods=['POST']) +def get_chat(): + + log_server("called /get_chat") + log_server("called /get_chat with POST") + userID = request.form['userid'] + sessionID = request.form['sessionid'] + message = request.form['message'] + zeit = date + l = f"INSERT INTO seession (sessionname, sesionstatus, seessiontyp) VALUES( \'{sessionID}\', \'{userID}\',\'{message}\', \'{zeit}\');" + log_server("neue Nachricht") + try: + dbcon(l) + log_server("message entered successfully") + except Exception: + error_log("unable to get new Messages") + # account = cursor.fetchone() + return render_template("chat.html") + +@app.route("/get_game_file", methods=['POST']) +def get_game_file(): + log_server("called /get_game_file") + pick() + +@app.route("/get_new_message") +def get_new_message(): + + log_server("called /get_new_message") + return render_template("chat.html") + +@app.route("/message") +def message(): + + log_server("called /message") + return render_template("message.html") + +# planer +@app.route("/get_planer", methods=['POST']) +def get_planer(): + log_server("called /get_planer") + log_server("called /get_planer with POST") + event = request.form['event'] + sessionID = request.form['sessionID'] + zeit = request.form['zeit'] + pfad = "/session/" + sessionID + status = "running" + l = f"INSERT INTO planer VALUES( \'{event}\', \'{zeit}\', \'{sessionID}\',\'{status}\');" + log_server("neues Event") + try: + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + cur.execute(l) + con.commit() + con.close() + log_server("event entered successfully /get_planer") + except Exception: + error_log("unable to insert event") + return redirect(f'/session/{sessionID}') + + +@app.route("/session/") +def _session(id): + #createChart("41", "NFSU2") + log_server(f"called /session/{id}") + con = sqlite3.connect("party.db") + cur = con.cursor() + l = f"SELECT eventname FROM planer WHERE sessionID = \'{id}\' ORDER BY eventzeit;" + eventname = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT eventzeit FROM planer WHERE sessionID = \'{id}\' ORDER BY eventzeit;" + eventzeit = [i[0] for i in cur.execute(l).fetchall()] + #eventtime = re.split(',', eventzeit) + con.commit() + + creator = [i[0] for i in cur.execute("SELECT username FROM user WHERE info = 'Host'").fetchall()] + con.commit() + + l = f"SELECT count(username) FROM user WHERE sessionID = \'{id}\';" + useranzahl = cur.execute(l).fetchall() + + l = f"SELECT matename, mateanzahl FROM mate WHERE sessionID = \'{id}\' ORDER BY mateanzahl;" + mate = cur.execute(l).fetchall() + con.commit() + + l = f"SELECT Spielname FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" + game = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT userID FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" + user = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT Spielaktivität FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" + aktivitaet = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT username FROM user WHERE sessionID = \'{id}\';" + unames = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT userID FROM user WHERE sessionID = \'{id}\';" + uids = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT ZEIT FROM game WHERE sessionID = \'{id}\' ORDER BY ZEIT;" + zeit = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + + l = f"SELECT Punkte FROM pointgame WHERE sessionID = \'{id}\' ORDER BY Punkte;" + p_punkte = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT Spielname FROM pointgame WHERE sessionID = \'{id}\' ORDER BY Punkte;" + p_game = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT Spielaktivität FROM pointgame WHERE sessionID = \'{id}\' ORDER BY Punkte;" + p_aktivitaet = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + + l = f"SELECT userID FROM pointgame WHERE sessionID = \'{id}\'ORDER BY Punkte;" + p_user = [i[0] for i in cur.execute(l).fetchall()] + con.commit() + cur.close() + + + class eventData: + def __init__(self, evn, evz): + self.eventname = evn + self.eventzeit = evz + + class userData: + def __init__(self, us, usid): + self.unames = us + self.uids = usid + + class gameData: + def __init__(self, ga, akt, usr, ze): + self.game = ga + self.aktivitaet = akt + self.user = usr + self.zeit = ze + + class pointgameData: + def __init__(self, ga, akt, usr, pu): + self.p_game = ga + self.p_aktivitaet = akt + self.p_user = usr + self.p_punkte = pu + + gameda = gameData(game, aktivitaet, user, zeit) + pointgameda = pointgameData(p_game, p_aktivitaet, p_user, p_punkte) + eventdata = eventData(eventname, eventzeit) + userdat = eventData(unames, uids) + + return render_template("session.html", + zeit=zeit, + aktivitaet=aktivitaet, + user=user, + eventdata=eventdata, + gameda=gameda, + pointgameda=pointgameda, + userdat=userdat, + game=game, + useranzahl=useranzahl, + creator=creator, + mate=mate, + uids=uids, + unames=unames, + der=uptime()) + + +@app.route("/mate", methods=['POST']) +def mate(): + log_server("called /mate") + + + mateFlaschen = request.form['mateFlaschen'] + sessionId = request.form['sessionID'] + mateSorte = request.form['mateSorte'] + + if mateSorte == "Club Mate" and mateFlaschen == 20: + matekiste + 1 + mws(matekiste) + if mateSorte == "Mio Mio" and mateFlaschen == 12: + matekiste + 1 + mws(matekiste) + if mateSorte == "Flora Mate" and mateFlaschen == 20: + matekiste + 1 + mws(matekiste) + if mateSorte == "Mate Mate" and mateFlaschen == 20: + martekiste + 1 + mws(martekiste) + if mateSorte == "Buenos Mate" and mateFlaschen == 20: + matekiste + 1 + mws(matekiste) + if mateSorte == "Charitea Mate" and mateFlaschen == 12: + matekiste + 1 + mws(matekiste) + if mateSorte == "1337 Mate" and mateFlaschen == 20: + matekiste + 1 + mws(matekiste) + if mateSorte == "Bionade Mate" and mateFlaschen == 20: + martekiste + 1 + mws(martekiste) + + mateSql = f"INSERT INTO mate VALUES (\"{mateSorte}\", \'{mateFlaschen}\', \'{sessionId}\');" + try: + con = sqlite3.connect("party.db") + warning_log("Verbindung mit Datenbank wurde aufgenommen /mate") + cur = con.cursor() + cur.execute(mateSql) + con.commit() + con.close() + + mate_logik(mateSorte, mateFlaschen) + log_server("mate wurde in Datenbank eingefügt") + except sqlite3.Error as e: + error_log(f"error while executing sql: {e}") + return redirect(f'/session/{sessionId}') + + +@app.route("/drink", methods=['POST']) +def drink(): + log_server("called /drink") + + con = sqlite3.connect("party.db") + warning_log("Verbindung mit Datenbank wurde aufgenommen /drink") + cur = con.cursor() + mateFlaschen = request.form['mateFlaschen'] + sessionId = request.form['sessionID'] + mateSorte = request.form['mateSorte'] + + l3 = f"SELECT mateanzahl FROM mate WHERE sessionID = \'{sessionId}\' AND matename = \'{mateSorte}\';" + manzahl = [i[0] for i in cur.execute(l3).fetchall()] + f = [mateFlaschen] + substracted = list() + for intem1, item2 in zip(manzahl, f): + substracted.append(intem1 - item2) + + k = substracted + + + mateSql = f"UPDATE mate SET mateanzahl = \'{k}\' WHERE sessionID = \'{sessionId}\' AND matename = \'{mateSorte}\');" + try: + con = sqlite3.connect("party.db") + warning_log("Verbindung mit Datenbank wurde aufgenommen /drink") + cur = con.cursor() + cur.execute(mateSql) + con.commit() + con.close() + + mate_logik(mateSorte, mateFlaschen) + log_server("mate wurde in Datenbank eingefügt") + except sqlite3.Error as e: + error_log(f"error while executing sql: {e}") + return redirect(f'/session/{sessionId}') + + + +@app.route("/logout") +def logout(): + log_server("called /logout") + user_count = -1 + return render_template("logout.html") + +@app.route("/spiel") +def spiel(): + log_server("called /spiel") + user_count = -1 + return render_template("spiel.html") + +@app.route("/get_spiel") +def get_spiel(): + log_server("called /get_spiel") + return render_template("spielt.html") + + + +@app.route("/signin") +def signin(): + log_server("called /signin") + return render_template("signin.html") + + +@app.route("/password") +def password(): + log_server("called /password") + return render_template("passwort_ver.html") + + +@app.route("/passwd") +def passwd(): + log_server("called /passwd") + return render_template("passwd.html") + + +@app.route("/change") +def change(): + log_server("called /change") + return render_template("changeSession.html") + + +@app.route("/create_session") +def create_session(): + log_server("called /create_session") + return render_template("createSession.html") + + +@app.route("/get_creat_session", methods=['POST']) +def get_creat_session(): + log_server("called /get_creat_session with POST") + Gsessionname = request.form['sessionname'] + GsessionID = request.form['sessionid'] + Gusername = "Host" + Gusertype = "admin" + GuserId = 1 + Gstatus = "online" + l1 = f'INSERT INTO seession VALUES({GsessionID}, \'{Gsessionname}\', \'online\', \'public\');' + print(l1) + log_server("neue Session") + + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + log_server("a") + cur.execute(l1) + + log_server("f") + user_count = +1 + starttime = int(zeit) + create_qr(GsessionID) + try: + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + username = "Host" + usertype = "admin" + userId = 1 + l = f'INSERT INTO user (username, sessionID, info) VALUES (\'{username}\', {GsessionID}, \'{usertype}\');' + cur.execute(l) + con.commit() + con.close() + except e: + warning_log("user admin konnte nicht angelegt werden") + return redirect(f'/session/{GsessionID}') + log_server("session successfully started") + +@app.route("/charts") +def charts(): + log_server("called /charts") + csessionID = request.form['sessionID'] + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + k = f"SELCT COUNT(DISTINCT 'Spielname') FROM game WHERE sessionID = \'{csessionID}\';" + cur.execute(k) + + return redirect(f'/session/{csessionID}') + +@app.route("/login") +def login(): + log_server("called /login") + return render_template("login.html") + + +@app.route("/stopuhr", methods=['POST']) +def stopuhr(): + + log_server("called /stopuhr") + spielName = request.form['spiel'] + art = request.form['art'] + zeit = request.form['zeit'] + userId = request.form['userid'] + sessionId = request.form['sessionID'] + l = f"INSERT INTO game VALUES( \'{sessionId}\', \'{userId}\',\'{spielName}\',\'{art}\', \'{zeit}\');" + try: + warning_log("verbindung mit Datenbank wurde aufgenommen") + dbcon(l) + log_server("time entered successfully /stopuhr") + except Exception: + error_log("unable to run sql /stopuhr") + return redirect(f'/session/{sessionId}') + + +@app.route("/pointGame", methods=['POST']) +def pointgame(): + userId = request.form['userid'] + sessionId = request.form['sessionID'] + l = f"INSERT INTO pointgame VALUES( \'{sessionId}\', \'{userId}\',\'{spielName}\',\'{art}\', \'{punkte}\');" + try: + warning_log("verbindung mit Datenbank wurde aufgenommen") + dbcon(l) + log_server("time entered successfully /pointGame") + except Exception: + error_log("unable to run sql /pointGame") + return redirect(f'/session/{sessionId}') + + + +@app.route("/get_event", methods=['POST']) +def get_event(): + + log_server("called /get_event") + event = request.form['event'] + zeit = request.form['zeit'] + sessionId = request.form['sessionid'] + l = f"INSERT INTO game VALUES( \'{event}\', \'{zeit}\', \'{sessionId}\');" + try: + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + cur.execute(l) + con.commit() + con.close() + log_server("event entered successfully /get_event") + except e: + error_log("unable to run sql /get_event") + return render_template("login.html") + + + +@app.route("/controll") +def controll(): + + log_server("called /controll") + return render_template("controll.html") + + +@app.route("/game") +def game(): + + log_server("called /game") + return render_template("game.html") + + + +@app.route("/rgb") +def rgb(): + + log_server("called /rgb") + return render_template("404.html") + + +@app.route("/get_login", methods=['POST']) +def get_login(): + log_server("called /get_login with POST") + username = request.form['username'] + sessionId = request.form['sessionID'] + userid = request.form['userID'] + l = f"select * from user where userID = \'{userid}\' and username=\'{username}\' and sessionID=\'{sessionId}\';" + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + cur.execute(l) + con.commit() + con.close() + # session['username'] = account['username'] + log_server("loggedin successfully") + return redirect(f'/session/{sessionId}') + + con.close() + + +@app.route("/new", methods=['POST']) +def new(): + log_server("called /new with POST") + username = request.form['username'] + sessionId = request.form['sessionID'] + userId = request.form['sessionID'] + info = "normal" + l = f"INSERT INTO user(username, sessionID, info) VALUES (\'{username}\',\'{sessionId}\',\'{info}\');" + con = sqlite3.connect("party.db") + warning_log("verbindung mit db wurde aufgenommen") + cur = con.cursor() + cur.execute(l) + con.commit() + con.close() + account = True + + # session['username'] = account['username'] + log_server("created new user successfully") + return redirect(f'/session/{sessionId}') + + con.close() + +@app.route("/upload_file", methods=['POST']) +def upload_file(): + log_server("called /upload_file") + file = request.files + print(f"{file=}") + return render_template(f'404.html') + +@app.errorhandler(404) +def page_not_found(e): + error_log("called non-existing page") + # note that we set the 404 status explicitly + return render_template('404.html'), 404 + + +def create_app(config_filename): + app.register_error_handler(404, page_not_found) + log_server("created app") + return app + + +# Use this line to run it localy + +runip = ipfin() +app.run(host=runip, port=80)