From 2a6a353992a9c32c498e8ee99c0aa90db74c27e3 Mon Sep 17 00:00:00 2001 From: Niklas Elsbrock Date: Thu, 12 Aug 2021 16:46:03 +0200 Subject: [PATCH] Installation vereinfacht - Standard-Servername auf "localhost:8080" gesetzt - Automatische Anlegung von Stufen und einem Administratorkonto bei leeren Tabellen --- nateman/__init__.py | 30 ++++++++++++++++++++++++---- nateman/resources/default-config.yml | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/nateman/__init__.py b/nateman/__init__.py index 8b18b52..0af07d7 100644 --- a/nateman/__init__.py +++ b/nateman/__init__.py @@ -75,6 +75,8 @@ def create_app() -> Flask: db.init_app(app) db.create_all(app=app) + init_db(app) + # Blueprints registrieren register_blueprints(app) @@ -97,11 +99,9 @@ def load_config(app: Flask): Falls keine vorhanden ist, erstellt eine und beendet anschließend NateMan. """ if not config_file_exists(app): - app.logger.critical("Die Konfigurationsdatei konnte nicht gefunden werden, erstellt eine neue...") config_path = create_config_file(app) - app.logger.critical(f"Da die Konfigurationsdatei nicht gefunden werden konnte, " - f"wurde eine neue erstellt ({config_path}). NateMan wird nun beendet.") - sys.exit(1) + app.logger.info(f"Da die Konfigurationsdatei nicht gefunden werden konnte, " + f"wurde eine neue erstellt ({config_path}).") # Konfigurationsdatei laden read_config_file(app) @@ -148,6 +148,28 @@ def setup_syslog(app: Flask): app.logger.addHandler(file_handler) +def init_db(app: Flask): + """ Initialisiert Stufen und Administratorkonto, falls nicht vorhanden """ + app.app_context().push() + if Stufe.query.count() == 0: + new_stufen_namen = ["EF", "Q1", "Q2"] + for stufe_name in new_stufen_namen: + stufe = Stufe(name=stufe_name) + db.session.add(stufe) + app.logger.info(f"Da keine Stufen vorhanden waren, wurden neue erstellt ({', '.join(new_stufen_namen)}).") + + if Lehrer.query.count() == 0: + new_lehrer_kuerzel = "admin" + new_lehrer_password = "admin" + lehrer = Lehrer(kuerzel="admin", is_admin=True, pwd_changed=False) + lehrer.set_password("admin", set_pwd_changed=False) + db.session.add(lehrer) + app.logger.info(f"Da keine Lehrerkonten vorhanden waren, wurde ein neues Administratorkonto erstellt. " + f"(Kürzel: {new_lehrer_kuerzel}; Passwort: {new_lehrer_password})") + + db.session.commit() + + def register_blueprints(app: Flask): """ Registriert die Flask-Blueprints """ from . import blueprints diff --git a/nateman/resources/default-config.yml b/nateman/resources/default-config.yml index 6a46607..4a26ab5 100644 --- a/nateman/resources/default-config.yml +++ b/nateman/resources/default-config.yml @@ -2,7 +2,7 @@ # Name, unter dem der Webserver normalerweise erreicht wird -server-name: "nateman.example.com" +server-name: "127.0.0.1:8080" # Benutzt der Webserver SSL (HTTPS)? uses-ssl: No