[System] Detect offline database

This commit is contained in:
Ferdinand Thiessen 2020-11-15 18:53:46 +01:00
parent 1d36aa4033
commit 602e1bc941
2 changed files with 8 additions and 2 deletions

View File

@ -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

View File

@ -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):