diff --git a/app/app.py b/app/app.py index 73dc8d7..785adb7 100644 --- a/app/app.py +++ b/app/app.py @@ -6,6 +6,7 @@ from werkzeug.security import generate_password_hash, check_password_hash from flask_login import (LoginManager, login_user, login_required, logout_user, current_user) from misc import datetime, date, time, currDay, prevDay, ZoneInfo, currVersion, currCommit from db import (db, Period, Task, Event, User) +from sqlalchemy import inspect from forms import (TaskForm, EventForm, PeriodForm, SignupForm, LoginForm, SettingsForm) from create_events import createEvents from log import appLogger @@ -82,9 +83,22 @@ def podStatus(): return blankPage, 500 # Index route -@app.route('/') +@app.route('/', methods=['GET', 'POST']) def index(): - return redirect('/events') + # Check for empty database, go to setup page if not setup + global tablesSetup + required_tables = ['period', 'task', 'event', 'user'] + inspector = inspect(db.engine) + tables = inspector.get_table_names() + tablesSetup = all(table in tables for table in required_tables) + if not tablesSetup: + # Initial setup page, should only appear if database is ready but not set up + db.create_all() + logger.info('DB initialized on first run') + return redirect(url_for('createAccount')) + # Otherwise, redirect to /events + else: + return redirect('/events') # Authentication routes @app.route('/login', methods=['GET', 'POST']) @@ -125,7 +139,7 @@ def createAccount(): return redirect(url_for('login')) return render_template('createAccount.html', form=form) else: - return 'Account creation is currently disabled' + return 'Account creation is currently disabled.
Set env var SIGNUP_ENABLED=YES to enable account creation' @app.route('/logout') @login_required def logout():