10-detect-empty-db #29
19
app/app.py
19
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 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():
|
||||||
|
Reference in New Issue
Block a user