check for empty database before begin

This commit is contained in:
2023-03-23 22:19:03 -04:00
parent 20af991841
commit 99dc76b25a

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,19 +83,19 @@ 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 # Check for empty database, go to setup page if not setup
global tablesSetup global tablesSetup
required_tables = ['period', 'task', 'event', 'user'] required_tables = ['period', 'task', 'event', 'user']
for table in required_tables: inspector = inspect(db.engine)
if table in db.metadata.tables: tables = inspector.get_table_names()
tablesSetup = True tablesSetup = all(table in tables for table in required_tables)
else:
tablesSetup = False
break
if not tablesSetup: if not tablesSetup:
return "" # 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 # Otherwise, redirect to /events
else: else:
return redirect('/events') return redirect('/events')
@@ -138,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():