From 925be674a6bf2aee7ffc6b8aaccd1d7c873b7d87 Mon Sep 17 00:00:00 2001 From: Yannic Nevado Hidalgo <yannic.hidalgo@stud.h-da.de> Date: Fri, 4 Mar 2022 13:52:38 +0100 Subject: [PATCH] =?UTF-8?q?fix(error-handling):=20sicherstellen=20das=20be?= =?UTF-8?q?nutzer=20existieren=20m=C3=BCssen=20vor=20GET=20und=20DELETE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.adoc | 2 +- app/app.py | 35 +++++++++++++++++++++++++++++------ app/models.py | 4 +++- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/README.adoc b/README.adoc index 1e6586a..bd47e45 100644 --- a/README.adoc +++ b/README.adoc @@ -53,7 +53,7 @@ Die Routen sind Passwort geschützt. # passwort: admin ---- -* Dies kann via `curl --user admin:admin -X GET http://localhost:5000/benutzer/1` getestet werden. Ohne Zugangsdaten bekommt man ein `Unauthorized Access` zurück. +* Dies kann via `curl -X GET http://localhost:5000/benutzer/1` getestet werden. Ohne Zugangsdaten bekommt man ein `Unauthorized Access` zurück. === GET diff --git a/app/app.py b/app/app.py index c403d37..23101ae 100644 --- a/app/app.py +++ b/app/app.py @@ -35,12 +35,20 @@ def index(): @app.route("/benutzer/<id>", methods=["GET"]) @auth.login_required def get_email(id): - benutzer_email = db.session.query(Benutzer.email).filter(Benutzer.customerid == id).first()[0] - return jsonify(email=benutzer_email) + + exists = db.session.query(db.exists().where(Benutzer.customerid == id)).scalar() + + if exists: + benutzer_email = db.session.query(Benutzer.email).filter(Benutzer.customerid == id).first()[0] + return jsonify(email=benutzer_email) + else: + return json.dumps({'Benutzer': 'existiert nicht'}) + @app.route("/benutzer", methods=["POST"]) @auth.login_required def create_user(): + new_user = Benutzer( vorname=request.json['vorname'], nachname=request.json['nachname'], @@ -48,15 +56,30 @@ def create_user(): ) db.session.add(new_user) db.session.commit() - return json.dumps({'Benutzer': 'hinzugefügt'}) + + benutzer = json.dumps( + {"vorname": new_user.vorname, + "nachname": new_user.nachname, + "email": new_user.email + }) + + #return benutzer + return jsonify(benutzer) @app.route("/benutzer/<id>", methods=["DELETE"]) @auth.login_required def delete_user(id): - Benutzer.query.filter_by(customerid=id).delete() - db.session.commit() - return json.dumps({'Benutzer': 'gelöscht'}) + + exists = db.session.query(db.exists().where(Benutzer.customerid == id)).scalar() + + if exists: + Benutzer.query.filter_by(customerid=id).delete() + db.session.commit() + return json.dumps({'Benutzer': 'geloescht'}) + else: + return json.dumps({'Benutzer': 'existiert nicht'}) + if __name__ == "__main__": app.run(debug=True) \ No newline at end of file diff --git a/app/models.py b/app/models.py index 8254fc7..a22447e 100644 --- a/app/models.py +++ b/app/models.py @@ -1,4 +1,5 @@ from flask_sqlalchemy import SQLAlchemy +import json db = SQLAlchemy() @@ -17,4 +18,5 @@ class Benutzer(db.Model): self.email = email def __repr__(self): - return f"{self.customerID}:{self.vorname}:{self.nachname}:{self.email}" \ No newline at end of file + benutzer = json.dumps({"vorname": self.vorname, "nachname": self.nachname, "email": self.email}) + return benutzer \ No newline at end of file -- GitLab