From b64ea9ad7b10a54f5900669726f35f125edcca25 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Wed, 20 Jan 2021 16:14:27 +0100 Subject: [PATCH] put zahlung --- ZahlungenForderungen.py | 14 ++++++++++++-- dbpool.py | 24 ++++++++++++++++++++++++ swagger.yaml | 15 +++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/ZahlungenForderungen.py b/ZahlungenForderungen.py index 9212136..6660e49 100644 --- a/ZahlungenForderungen.py +++ b/ZahlungenForderungen.py @@ -1,6 +1,7 @@ -from dbpool import getConnection, getOne, getMany +from dbpool import getConnection, getOne, getMany, putOne import datetime import decimal +import dateparser def get_zahlungen_by_mieter(mieter_id): return getMany(""" @@ -103,4 +104,13 @@ WHERE mieter = ? AND "forderungen": float(sumF), "saldo": float(saldo), "zahlungen": float(sumZ) - } \ No newline at end of file + } + +def put_zahlung(zahlung): + print("Input of put_zahlung: {} {}".format(type(zahlung), zahlung)) + datum_soll = dateparser.parse(zahlung["datum_soll"], languages=["de"]) + datum_ist = dateparser.parse(zahlung["datum_ist"], languages=["de"]) + return putOne(""" +INSERT INTO zahlung (datum_soll, datum_ist, mieter, betrag, kommentar) + VALUES(?, ?, ?, ?, ?) +""", [ datum_soll, datum_ist, zahlung["mieter"], zahlung["betrag"], zahlung["kommentar"] ], "Zahlung") diff --git a/dbpool.py b/dbpool.py index 497d686..902c701 100644 --- a/dbpool.py +++ b/dbpool.py @@ -15,6 +15,7 @@ def getConnection(): host = host, database = database ) + conn.autocommit = False return conn except mariadb.Error as err: @@ -69,4 +70,27 @@ def getOne(stmt, params, objName): cur.close() if dbh: dbh.close() + +def putOne(stmt, params, objName): + dbh = None + cur = None + try: + dbh = getConnection() + cur = dbh.cursor(dictionary=True) + cur.execute(stmt, params) + dbh.commit() + return "{} successfully inserted with primary key {}".format(objName, cur.lastrowid), 202 + except mariadb.Error as err: + dbh.rollback() + print("Database error in putOne({}): {}".format(objName, err)) + except Exception as err: + dbh.rollback() + print("Error in putOne({}): {}".format(objName, err)) + return str(err), 500 + finally: + print("return connection in getOne({})".format(objName)) + if cur: + cur.close() + if dbh: + dbh.close() \ No newline at end of file diff --git a/swagger.yaml b/swagger.yaml index 7ce44cd..d8727ed 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -258,6 +258,21 @@ paths: description: Neither Forderungen nor Zahlungen available 500: description: Some server error + /hv/zahlung: + post: + tags: [ "Zahlung" ] + operationId: ZahlungenForderungen.put_zahlung + summary: Inserts a new Zahlung + parameters: + - name: zahlung + in: body + schema: + $ref: '#/definitions/Zahlung' + responses: + 202: + description: Zahlung successfully inserted + 500: + description: Some server or database error definitions: