10-detect-empty-db #29

Merged
williamp merged 2 commits from 10-detect-empty-db into testing 2023-03-24 02:20:17 +00:00

View File

@@ -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 flask_login import (LoginManager, login_user, login_required, logout_user, current_user)
from misc import datetime, date, time, currDay, prevDay, ZoneInfo, currVersion, currCommit from misc import datetime, date, time, currDay, prevDay, ZoneInfo, currVersion, currCommit
from db import (db, Period, Task, Event, User) from db import (db, Period, Task, Event, User)
from sqlalchemy import inspect
from forms import (TaskForm, EventForm, PeriodForm, SignupForm, LoginForm, SettingsForm) from forms import (TaskForm, EventForm, PeriodForm, SignupForm, LoginForm, SettingsForm)
from create_events import createEvents from create_events import createEvents
from log import appLogger from log import appLogger
@@ -82,8 +83,21 @@ def podStatus():
return blankPage, 500 return blankPage, 500
# Index route # Index route
@app.route('/') @app.route('/', methods=['GET', 'POST'])
def index(): def index():
# 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') return redirect('/events')
# Authentication routes # Authentication routes
@@ -125,7 +139,7 @@ def createAccount():
return redirect(url_for('login')) return redirect(url_for('login'))
return render_template('createAccount.html', form=form) return render_template('createAccount.html', form=form)
else: else:
return 'Account creation is currently disabled' return 'Account creation is currently disabled. <br> Set env var SIGNUP_ENABLED=YES to enable account creation'
@app.route('/logout') @app.route('/logout')
@login_required @login_required
def logout(): def logout():