From 2427d94626adf5186ad96783e04cd9f08b6aec41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Gr=C3=B6ger?= Date: Thu, 2 May 2019 02:21:50 +0200 Subject: [PATCH] =?UTF-8?q?task=20#22=20und=20task=20#26=20abgeschlossen?= =?UTF-8?q?=20es=20werden=20dynamisch=20neue=20geruechte=20erstellt,=20wen?= =?UTF-8?q?n=20n=C3=B6tig.=20Finanzer=20kann=20sowohl=20Guthaben=20als=20a?= =?UTF-8?q?uch=20Schulden=20hinzuf=C3=BCgen,=20egal=20zu=20welcher=20Zeit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- geruecht/baruser/routes.py | 9 ++-- geruecht/finanzer/routes.py | 61 ++++++++++++++++++++++++- geruecht/model/creditList.py | 50 +++++++++++++++++++-- geruecht/model/user.py | 83 +++++++++++++++++++++++------------ geruecht/site.db | Bin 28672 -> 28672 bytes 5 files changed, 166 insertions(+), 37 deletions(-) diff --git a/geruecht/baruser/routes.py b/geruecht/baruser/routes.py index 151a65f..352cdba 100644 --- a/geruecht/baruser/routes.py +++ b/geruecht/baruser/routes.py @@ -18,7 +18,7 @@ def _bar(): users = User.query.all() for user in users: geruecht = None - geruecht = user.getCurrentGeruecht() + geruecht = user.getGeruecht() if geruecht is not None: month = geruecht.getMonth(datetime.now().month) amount = abs(month[0] - month[1]) @@ -43,12 +43,9 @@ def _baradd(): amount = int(data['amount']) user = User.query.filter_by(userID=userID).first() - geruecht = user.getCurrentGeruecht() - month = geruecht.addAmount(amount) - amount = abs(month[0] - month[1]) + month = user.addAmount(amount) - db.session.add(geruecht) - db.session.commit() + amount = abs(month[0] - month[1]) return jsonify({"userId": user.userID, "amount": amount}) return jsonify({"error", "permission denied"}), 401 diff --git a/geruecht/finanzer/routes.py b/geruecht/finanzer/routes.py index aae886b..638c0fc 100644 --- a/geruecht/finanzer/routes.py +++ b/geruecht/finanzer/routes.py @@ -1,4 +1,5 @@ from flask import Blueprint, request, jsonify +from datetime import datetime from geruecht import MONEY from geruecht.routes import verifyAccessToken from geruecht.model.user import User @@ -45,4 +46,62 @@ def _getFinanzerYear(): for geruecht in user.geruechte: dic[user.userID][geruecht.year] = geruecht.toJSON() return jsonify(dic) - return jsonify({"error": "permission denied"}), 401 \ No newline at end of file + return jsonify({"error": "permission denied"}), 401 + +@finanzer.route("/finanzerAddAmount", methods=['POST']) +def _addAmount(): + print(request.headers) + token = request.headers.get("Token") + print(token) + accToken = verifyAccessToken(token, MONEY) + + if accToken is not None: + data = request.get_json() + userID = data['userId'] + amount = int(data['amount']) + + try: + year = int(data['year']) + except KeyError as er: + print("Error: ", er) + year = datetime.now().year + try: + month = int(data['month']) + except KeyError as er: + print("Error: ", er) + month = datetime.now().month + + user = User.query.filter_by(userID=userID).first() + user.addAmount(amount, year=year, month=month) + retVal = user.getGeruecht(year=year).toJSON() + return jsonify(retVal) + return jsonify({"error": "permission denied"}), 401 + +@finanzer.route("/finanzerAddCredit", methods=['POST']) +def _addCredit(): + print(request.headers) + token = request.headers.get("Token") + print(token) + accToken = verifyAccessToken(token, MONEY) + + if accToken is not None: + data = request.get_json() + userID = data['userId'] + credit = int(data['credit']) + + try: + year = int(data['year']) + except KeyError as er: + print("Error: ", er) + year = datetime.now().year + try: + month = int(data['month']) + except KeyError as er: + print("Error: ", er) + month = datetime.now().month + + user = User.query.filter_by(userID=userID).first() + user.addCredit(credit, year=year, month=month) + retVal = user.getGeruecht(year=year).toJSON() + return jsonify(retVal) + return jsonify({"error": "permission denied"}), 401 diff --git a/geruecht/model/creditList.py b/geruecht/model/creditList.py index e0bad3b..191c6c6 100644 --- a/geruecht/model/creditList.py +++ b/geruecht/model/creditList.py @@ -73,7 +73,7 @@ class CreditList(db.Model): nov = self.nov_guthaben - self.nov_schulden dez = self.dez_guthaben - self.dez_schulden - sum = jan + feb + maer + apr + mai + jun + jul + aug + sep + okt + nov + dez + self.last_schulden + sum = jan + feb + maer + apr + mai + jun + jul + aug + sep + okt + nov + dez - self.last_schulden return sum def getMonth(self, month): @@ -106,8 +106,7 @@ class CreditList(db.Model): return retValue - def addAmount(self, amount): - month = datetime.now().month + def addAmount(self, amount, month=datetime.now().month): if month == 1: self.jan_schulden += amount @@ -146,6 +145,51 @@ class CreditList(db.Model): self.dez_schulden += amount retValue = (self.dez_guthaben, self.dez_schulden) + db.session.commit() + + return retValue + + def addCredit(self, credit, month=datetime.now().month): + + if month == 1: + self.jan_guthaben += credit + retValue = (self.jan_guthaben, self.jan_schulden) + elif month == 2: + self.feb_guthaben += credit + retValue = (self.feb_guthaben, self.feb_schulden) + elif month == 3: + self.maer_guthaben += credit + retValue = (self.maer_guthaben, self.maer_schulden) + elif month == 4: + self.apr_guthaben += credit + retValue = (self.apr_guthaben, self.apr_schulden) + elif month == 5: + self.mai_guthaben += credit + retValue = (self.mai_guthaben, self.mai_schulden) + elif month == 6: + self.jun_guthaben += credit + retValue = (self.jun_guthaben, self.jun_schulden) + elif month == 7: + self.jul_guthaben += credit + retValue = (self.jul_guthaben, self.jul_schulden) + elif month == 8: + self.aug_guthaben += credit + retValue = (self.aug_guthaben, self.aug_schulden) + elif month == 9: + self.sep_guthaben += credit + retValue = (self.sep_guthaben, self.sep_schulden) + elif month == 10: + self.okt_guthaben += credit + retValue = (self.okt_guthaben, self.okt_schulden) + elif month == 11: + self.nov_guthaben += credit + retValue = (self.nov_guthaben, self.nov_schulden) + elif month == 12: + self.dez_guthaben += credit + retValue = (self.dez_guthaben, self.dez_schulden) + + db.session.commit() + return retValue def toJSON(self): diff --git a/geruecht/model/user.py b/geruecht/model/user.py index 930e528..fbb2f20 100644 --- a/geruecht/model/user.py +++ b/geruecht/model/user.py @@ -27,37 +27,66 @@ class User(db.Model): geruechte = db.relationship('CreditList', backref='user', lazy=True) - def getCurrentGeruecht(self): - print('search currentGeruecht in user {}'.format(self.userID)) - if len(self.geruechte) == 0: - print('user {} has no geruechte'.format(self.userID)) - return self.createCurrentGeruecht() - print('iterate throw geruechte') - last = None - for geruecht in self.geruechte: - print('geruecht {}'.format(geruecht)) - if geruecht.year == datetime.now().year: - print('found geruecht {}'.format(geruecht)) - return geruecht - if geruecht.year == datetime.now().year - 1: - print('fonud last geruecht {}'.format(geruecht)) - last = geruecht - - if last: - amount = last.getSchulden() - return self.createCurrentGeruecht(amount=amount) - else: - print('error, no geruecht found and no geruecht created') - - def createCurrentGeruecht(self, amount=0): - print('create currentgeruecht for user {} in year {}'.format(self.userID, datetime.now().year)) - credit = CreditList(user_id=self.id, last_schulden=amount) + def createGeruecht(self, amount=0, year=datetime.now().year): + print('create geruecht for user {} in year {}'.format(self.userID, year)) + credit = CreditList(user_id=self.id, last_schulden=amount, year=year) db.session.add(credit) db.session.commit() - credit = CreditList.query.filter_by(year=datetime.now().year).first() - print('reated currentgeruecht {}'.format(credit)) + credit = CreditList.query.filter_by(year=year, user_id=self.id).first() + print('reated geruecht {}'.format(credit)) return credit + def getGeruecht(self, year=datetime.now().year): + for geruecht in self.geruechte: + if geruecht.year == year: + print("find geruecht {} for user {}".format(geruecht, self.id)) + return geruecht + print("no geruecht found for user {}. Will create one".format(self.id)) + geruecht = self.createGeruecht(year=year) + + self.updateGeruecht() + + return geruecht + + def addAmount(self, amount, year=datetime.now().year, month=datetime.now().month): + geruecht = self.getGeruecht(year=year) + retVal = geruecht.addAmount(amount, month=month) + + db.session.add(geruecht) + db.session.commit() + + self.updateGeruecht() + + return retVal + + def addCredit(self, credit, year=datetime.now().year, month=datetime.now().month): + geruecht = self.getGeruecht(year=year) + retVal = geruecht.addCredit(credit, month=month) + + db.session.add(geruecht) + db.session.commit() + + self.updateGeruecht() + + return retVal + + def updateGeruecht(self): + """ Update list of geruechte + + """ + self.geruechte.sort(key=self.sortYear) + + for index, geruecht in enumerate(self.geruechte): + if index == 0 or index == len(self.geruechte) - 1: + geruecht.last_schulden = 0 + if index != 0: + geruecht.last_schulden = (self.geruechte[index - 1].getSchulden() * -1) + + db.session.commit() + + def sortYear(self, geruecht): + return geruecht.year + def toJSON(self): """ Create Dic to dump in JSON diff --git a/geruecht/site.db b/geruecht/site.db index 30785b79eb676034d4ab6f610a4331b6e0ad4d59..fe9f624634a1ba6063c3a071a79f8af094a6da47 100644 GIT binary patch delta 572 zcmZvYu}cFn6vmTWYOY%I>`>&;_DYc|9dvPUD_Rkui(|pXb|_TEg55f3b#OkpQAcM{ z?mtk3f{RP1cBpqyDuUC2hzKU_1ugmlc}d?Bk^EFRP=!@0Is+!$=dVy#*#+1uu-<0eu#LZOY|4SLXq z4=0*@go$y@z{6YA?kyz*(L&%s3tr(}5D&m7H8UWD9Cf^GB5Ck@6y|xtU*HL1P=qYc z!x_KeHQ|f#V_riUUDwHAh{f+91Y-*|QPbaKU78+?BNCKVRo2u-M*82I1u zKjZ(oSk)R<)%CNInr