2601/ui-imprv - UI Improvements, Code Cleanup #2
35
app.py
35
app.py
@@ -38,32 +38,51 @@ def index():
|
|||||||
|
|
||||||
@app.route('/dashboard')
|
@app.route('/dashboard')
|
||||||
def dashboard():
|
def dashboard():
|
||||||
|
# Load Databases
|
||||||
|
db = dbload()
|
||||||
|
udb = udbload()
|
||||||
|
|
||||||
|
# Check if user is a guest
|
||||||
if session.get('loggedIn', False) == False:
|
if session.get('loggedIn', False) == False:
|
||||||
flash('You must be signed in to view the dashboard!', 'error')
|
flash('You must be signed in to view the dashboard!', 'error')
|
||||||
return redirect(url_for('upload'))
|
return redirect(url_for('upload'))
|
||||||
db = dbload()
|
|
||||||
udb = udbload()
|
# Get user quota, usage, and files
|
||||||
username = session.get('username')
|
username = session.get('username')
|
||||||
userfiles = []
|
userfiles = []
|
||||||
quota_usage_gb = 0
|
quota_usage_gb = 0
|
||||||
|
|
||||||
if not username:
|
if not username:
|
||||||
flash('An error occurred. Please sign in again.', 'error')
|
flash('An error occurred. Please sign in again.', 'error')
|
||||||
session['loggedIn'] = False
|
session['loggedIn'] = False
|
||||||
session.pop('username', None)
|
session.pop('username', None)
|
||||||
return redirect(url_for('upload'))
|
return redirect(url_for('upload'))
|
||||||
|
|
||||||
for file in db['files']:
|
for file in db['files']:
|
||||||
if db['files'][file].get('owner') == username:
|
if db['files'][file].get('owner') == username:
|
||||||
db['files'][file]['file'] = file
|
db['files'][file]['file'] = file
|
||||||
db['files'][file]['code'] = file.split('_')[-1]
|
db['files'][file]['code'] = file.split('_')[-1]
|
||||||
userfiles.append(db['files'][file])
|
userfiles.append(db['files'][file])
|
||||||
|
|
||||||
for userfile in userfiles:
|
for userfile in userfiles:
|
||||||
usf_mb = userfile['size_megabytes']
|
usf_mb = userfile['size_megabytes']
|
||||||
if usf_mb:
|
if usf_mb:
|
||||||
quota_usage_gb += usf_mb / 1024
|
quota_usage_gb += usf_mb / 1024
|
||||||
|
|
||||||
quota_usage_gb = round(quota_usage_gb, 1)
|
quota_usage_gb = round(quota_usage_gb, 1)
|
||||||
return render_template('dashboard.html', files=userfiles, username=username, quota_gb=udb[[user['username'] for user in udb].index(username)]['quota_gb'], quota_usage=quota_usage_gb)
|
|
||||||
|
# Render template with variables
|
||||||
|
return render_template(
|
||||||
|
'dashboard.html',
|
||||||
|
files=userfiles,
|
||||||
|
username=username,
|
||||||
|
quota_gb=udb[[user['username'] for user in udb].index(username)]['quota_gb'],
|
||||||
|
quota_usage=quota_usage_gb
|
||||||
|
)
|
||||||
|
|
||||||
@app.route('/logout')
|
@app.route('/logout')
|
||||||
def logout():
|
def logout():
|
||||||
|
# Sign out user and redirect to upload page
|
||||||
session['loggedIn'] = False
|
session['loggedIn'] = False
|
||||||
session.pop('username', None)
|
session.pop('username', None)
|
||||||
flash('Successfully signed out!', 'info')
|
flash('Successfully signed out!', 'info')
|
||||||
@@ -71,43 +90,53 @@ def logout():
|
|||||||
|
|
||||||
@app.route('/login', methods=['GET', 'POST'])
|
@app.route('/login', methods=['GET', 'POST'])
|
||||||
def login():
|
def login():
|
||||||
|
# Load User Database (UDB)
|
||||||
udb = udbload()
|
udb = udbload()
|
||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return render_template('login.html')
|
return render_template('login.html')
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
# Get data from form
|
||||||
username = request.form.get('username')
|
username = request.form.get('username')
|
||||||
password = request.form.get('password')
|
password = request.form.get('password')
|
||||||
|
|
||||||
|
# Check if user exists and password matches, log them in
|
||||||
for user in udb:
|
for user in udb:
|
||||||
if user['username'] == username and user['password'] == password:
|
if user['username'] == username and user['password'] == password:
|
||||||
session['loggedIn'] = True
|
session['loggedIn'] = True
|
||||||
session['username'] = username
|
session['username'] = username
|
||||||
flash('Successfully signed in!', 'info')
|
flash('Successfully signed in!', 'info')
|
||||||
return redirect(url_for('upload'))
|
return redirect(url_for('upload'))
|
||||||
|
|
||||||
|
# If still here, login failed
|
||||||
flash('Invalid username or password!', 'error')
|
flash('Invalid username or password!', 'error')
|
||||||
return redirect(url_for('login'))
|
return redirect(url_for('login'))
|
||||||
|
|
||||||
@app.route('/register', methods=['GET', 'POST'])
|
@app.route('/register', methods=['GET', 'POST'])
|
||||||
def register():
|
def register():
|
||||||
|
# Load User Database (UDB)
|
||||||
udb = udbload()
|
udb = udbload()
|
||||||
|
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
return render_template('register.html')
|
return render_template('register.html')
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
|
# Get data from form
|
||||||
username = request.form.get('username')
|
username = request.form.get('username')
|
||||||
password = request.form.get('password')
|
password = request.form.get('password')
|
||||||
|
|
||||||
|
# Check if username is already taken
|
||||||
for user in udb:
|
for user in udb:
|
||||||
if user['username'] == username:
|
if user['username'] == username:
|
||||||
flash('Username already taken!', 'error')
|
flash('Username already taken!', 'error')
|
||||||
return redirect(url_for('register'))
|
return redirect(url_for('register'))
|
||||||
|
|
||||||
|
# Create new user with default quota of 3GB
|
||||||
udb.append({
|
udb.append({
|
||||||
'username': username,
|
'username': username,
|
||||||
'password': password,
|
'password': password,
|
||||||
'quota_gb': 3
|
'quota_gb': 3
|
||||||
})
|
})
|
||||||
|
|
||||||
udbsave(udb)
|
udbsave(udb)
|
||||||
flash('Successfully registered! You can now sign in.', 'info')
|
flash('Successfully registered! You can now sign in.', 'info')
|
||||||
return redirect(url_for('login'))
|
return redirect(url_for('login'))
|
||||||
|
|||||||
Reference in New Issue
Block a user