diff --git a/flaschengeist/app.py b/flaschengeist/app.py index 7e4c8d2..ad44085 100644 --- a/flaschengeist/app.py +++ b/flaschengeist/app.py @@ -3,6 +3,7 @@ from flask import Flask, current_app from flask_cors import CORS from datetime import datetime, date from flask.json import JSONEncoder, jsonify +from sqlalchemy.exc import OperationalError from werkzeug.exceptions import HTTPException from . import logger @@ -93,6 +94,9 @@ def create_app(): if isinstance(e, HTTPException): logger.debug(e.description, exc_info=True) return jsonify({"error": e.description}), e.code + if isinstance(e, OperationalError): + logger.error(e, exc_info=True) + return {"error": "Database unavailable"}, 504 logger.error(str(e), exc_info=True) return jsonify({"error": "Internal server error occurred"}), 500 diff --git a/flaschengeist/controller/userController.py b/flaschengeist/controller/userController.py index c912d9c..776dbce 100644 --- a/flaschengeist/controller/userController.py +++ b/flaschengeist/controller/userController.py @@ -1,4 +1,5 @@ from flask import current_app +from sqlalchemy.orm.exc import NoResultFound from werkzeug.exceptions import NotFound, BadRequest from flaschengeist.utils.hook import Hook @@ -9,8 +10,9 @@ from flaschengeist import logger def login_user(username, password): logger.info("login user {{ {} }}".format(username)) - user = User.query.filter(User.userid == username).one_or_none() - if user is None: + try: + user = User.query.filter(User.userid == username).one() + except NoResultFound: user = User(userid=username) db.session.add(user) if current_app.config["FG_AUTH_BACKEND"].login(user, password):