From 068da1e57b066e4d70c14f27269ced250101e864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Gr=C3=B6ger?= Date: Tue, 3 Mar 2020 22:33:47 +0100 Subject: [PATCH] finished ##208 --- geruecht/baruser/routes.py | 2 +- geruecht/controller/databaseController.py | 80 +++++++++++++++++++++++ geruecht/controller/userController.py | 21 ++++++ geruecht/model/creditList.py | 2 +- geruecht/model/user.py | 17 ++++- geruecht/routes.py | 29 ++++++++ geruecht/vorstand/routes.py | 54 +++++++++++++++ 7 files changed, 202 insertions(+), 3 deletions(-) diff --git a/geruecht/baruser/routes.py b/geruecht/baruser/routes.py index 0e2c85f..706b938 100644 --- a/geruecht/baruser/routes.py +++ b/geruecht/baruser/routes.py @@ -39,7 +39,7 @@ def _bar(**kwargs): dic[user.uid] = {"username": user.uid, "firstname": user.firstname, "lastname": user.lastname, - "amount": abs(all), + "amount": all, "locked": user.locked, "type": type } diff --git a/geruecht/controller/databaseController.py b/geruecht/controller/databaseController.py index 3976ece..b54f846 100644 --- a/geruecht/controller/databaseController.py +++ b/geruecht/controller/databaseController.py @@ -491,6 +491,86 @@ class DatabaseController(metaclass=Singleton): self.db.connection.rollback() raise DatabaseExecption("Something went worng with Database: {}".format(err)) + def getAllStatus(self): + try: + cursor = self.db.connection.cursor() + cursor.execute('select * from statusgroup') + return cursor.fetchall() + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + + def getStatus(self, name): + try: + cursor = self.db.connection.cursor() + if type(name) == str: + sql = "select * from statusgroup where name='{}'".format(name) + elif type(name) == int: + sql = 'select * from statusgroup where id={}'.format(name) + else: + raise DatabaseExecption("name as no type int or str. name={}, type={}".format(name, type(name))) + cursor.execute(sql) + return cursor.fetchone() + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + + def setStatus(self, name): + try: + cursor = self.db.connection.cursor() + cursor.execute("insert into statusgroup (name) values ('{}')".format(name)) + self.db.connection.commit() + return self.getStatus(name) + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + + def updateStatus(self, status): + try: + cursor = self.db.connection.cursor() + cursor.execute("update statusgroup set name='{}' where id={}".format(status['name'], status['id'])) + self.db.connection.commit() + return self.getStatus(status['id']) + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + + def deleteStatus(self, status): + try: + cursor = self.db.connection.cursor() + cursor.execute("delete from statusgroup where id={}".format(status['id'])) + self.db.connection.commit() + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + + def updateStatusOfUser(self, username, status): + try: + cursor = self.db.connection.cursor() + cursor.execute("update user set statusgroup={} where uid='{}'".format(status['id'], username)) + self.db.connection.commit() + return self.getUser(username) + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + + def updateVotingOfUser(self, username, voting): + try: + cursor = self.db.connection.cursor() + cursor.execute("update user set voting={} where uid='{}'".format(voting, username)) + self.db.connection.commit() + return self.getUser(username) + except Exception as err: + traceback.print_exc() + self.db.connection.rollback() + raise DatabaseExecption("Something went worng with Databes: {}".format(err)) + if __name__ == '__main__': db = DatabaseController() user = db.getUser('jhille') diff --git a/geruecht/controller/userController.py b/geruecht/controller/userController.py index 8578da7..497b2bb 100644 --- a/geruecht/controller/userController.py +++ b/geruecht/controller/userController.py @@ -17,6 +17,27 @@ class UserController(metaclass=Singleton): def __init__(self): pass + def getAllStatus(self): + return db.getAllStatus() + + def getStatus(self, name): + return db.getStatus(name) + + def setStatus(self, name): + return db.setStatus(name) + + def deleteStatus(self, status): + db.deleteStatus(status) + + def updateStatus(self, status): + return db.updateStatus(status) + + def updateStatusOfUser(self, username, status): + return db.updateStatusOfUser(username, status) + + def updateVotingOfUser(self, username, voting): + return db.updateVotingOfUser(username, voting) + def deleteDrinkType(self, type): db.deleteDrinkType(type) diff --git a/geruecht/model/creditList.py b/geruecht/model/creditList.py index 5bb8688..cf1a605 100644 --- a/geruecht/model/creditList.py +++ b/geruecht/model/creditList.py @@ -142,7 +142,7 @@ class CreditList(): elif month == 2: retValue = (self.feb_guthaben, self.feb_schulden) elif month == 3: - retValue = (self.mear_guthaben, self.maer_schulden) + retValue = (self.maer_guthaben, self.maer_schulden) elif month == 4: retValue = (self.apr_guthaben, self.apr_schulden) elif month == 5: diff --git a/geruecht/model/user.py b/geruecht/model/user.py index 23460fb..a1a0e8e 100644 --- a/geruecht/model/user.py +++ b/geruecht/model/user.py @@ -27,6 +27,14 @@ class User(): self.firstname = data['firstname'] self.lastname = data['lastname'] self.group = data['gruppe'] + if 'statusgroup' in data: + self.statusgroup = data['statusgroup'] + else: + self.statusgroup = None + if 'voting' in data: + self.voting = data['voting'] + else: + self.voting = None if 'mail' in data: self.mail = data['mail'] else: @@ -68,6 +76,10 @@ class User(): self.autoLock = bool(data['autoLock']) if 'mail' in data: self.mail = data['mail'] + if 'statusgorup' in data: + self.statusgroup = data['statusgroup'] + if 'voting' in data: + self.voting = data['voting'] def initGeruechte(self, creditLists): if type(creditLists) == list: @@ -196,6 +208,7 @@ class User(): A Dic with static Attributes. """ dic = { + "id": self.id, "userId": self.uid, "uid": self.uid, "dn": self.dn, @@ -206,7 +219,9 @@ class User(): "locked": self.locked, "autoLock": self.autoLock, "limit": self.limit, - "mail": self.mail + "mail": self.mail, + "statusgroup": self.statusgroup, + "voting": self.voting } return dic diff --git a/geruecht/routes.py b/geruecht/routes.py index 6801fb4..785327e 100644 --- a/geruecht/routes.py +++ b/geruecht/routes.py @@ -1,4 +1,5 @@ from geruecht import app, LOGGER +from geruecht.decorator import login_required from geruecht.exceptions import PermissionDenied import geruecht.controller.accesTokenController as ac import geruecht.controller.userController as uc @@ -46,7 +47,35 @@ def getTypes(): except Exception as err: return jsonify({"error": str(err)}), 500 +@app.route('/getAllStatus', methods=['GET']) +@login_required(groups=[USER, MONEY, GASTRO, BAR]) +def _getAllStatus(**kwargs): + try: + retVal = userController.getAllStatus() + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 +@app.route('/getStatus', methods=['POST']) +@login_required(groups=[USER, MONEY, GASTRO, BAR]) +def _getStatus(**kwargs): + try: + data = request.get_json() + name = data['name'] + retVal = userController.getStatus(name) + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 + +@app.route('/getUsers', methods=['GET']) +@login_required(groups=[MONEY, GASTRO]) +def _getUsers(**kwargs): + try: + users = userController.getAllUsersfromDB() + retVal = [user.toJSON() for user in users] + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 @app.route("/login", methods=['POST']) def _login(): diff --git a/geruecht/vorstand/routes.py b/geruecht/vorstand/routes.py index 8e6ff0d..2dd9c29 100644 --- a/geruecht/vorstand/routes.py +++ b/geruecht/vorstand/routes.py @@ -8,6 +8,60 @@ import time vorstand = Blueprint("vorstand", __name__) userController = uc.UserController() +@vorstand.route('/um/setStatus', methods=['POST']) +@login_required(groups=[MONEY, GASTRO]) +def _setStatus(**kwargs): + try: + data = request.get_json() + name = data['name'] + retVal = userController.setStatus(name) + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 + +@vorstand.route('/um/updateStatus', methods=['POST']) +@login_required(groups=[MONEY, GASTRO]) +def _updateStatus(**kwargs): + try: + data = request.get_json() + retVal = userController.updateStatus(data) + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 + +@vorstand.route('/um/deleteStatus', methods=['POST']) +@login_required(groups=[MONEY, GASTRO]) +def _deleteStatus(**kwargs): + try: + data = request.get_json() + userController.deleteStatus(data) + return jsonify({"ok": "ok"}) + except Exception as err: + return jsonify({"error": str(err)}), 409 + +@vorstand.route('/um/updateStatusUser', methods=['POST']) +@login_required(groups=[MONEY, GASTRO]) +def _updateStatusUser(**kwargs): + try: + data = request.get_json() + username = data['username'] + status = data['status'] + retVal = userController.updateStatusOfUser(username, status).toJSON() + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 + +@vorstand.route('/um/updateVoting', methods=['POST']) +@login_required(groups=[MONEY, GASTRO]) +def _updateVoting(**kwargs): + try: + data = request.get_json() + username = data['username'] + voting = data['voting'] + retVal = userController.updateVotingOfUser(username, voting).toJSON() + return jsonify(retVal) + except Exception as err: + return jsonify({"error": str(err)}), 500 @vorstand.route("/sm/addUser", methods=['POST', 'GET']) @login_required(groups=[MONEY, GASTRO])