Support for cookies. added change username button
This commit is contained in:
parent
7ba32dc98b
commit
f74cca961b
4 changed files with 69 additions and 7 deletions
30
app.py
30
app.py
|
|
@ -1,4 +1,4 @@
|
||||||
from flask import Flask, render_template, jsonify, request, session, redirect, url_for, send_file
|
from flask import Flask, render_template, jsonify, request, session, redirect, url_for, send_file, make_response
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
@ -85,7 +85,16 @@ def inject_apis():
|
||||||
def index():
|
def index():
|
||||||
"""Home page with username input"""
|
"""Home page with username input"""
|
||||||
print("DEBUG: Index route accessed", flush=True)
|
print("DEBUG: Index route accessed", flush=True)
|
||||||
return render_template('index.html')
|
# Get the last used username from cookie
|
||||||
|
last_username = request.cookies.get('last_username', '')
|
||||||
|
print(f"DEBUG: Last username from cookie: '{last_username}'", flush=True)
|
||||||
|
|
||||||
|
# Auto-redirect to dashboard if username cookie exists
|
||||||
|
if last_username and last_username.strip():
|
||||||
|
print(f"DEBUG: Auto-redirecting to dashboard for user: '{last_username}'", flush=True)
|
||||||
|
return redirect(url_for('dashboard_current', username=last_username.strip()))
|
||||||
|
|
||||||
|
return render_template('index.html', last_username=last_username)
|
||||||
|
|
||||||
@app.route('/dashboard')
|
@app.route('/dashboard')
|
||||||
def dashboard_form():
|
def dashboard_form():
|
||||||
|
|
@ -153,6 +162,13 @@ def set_debug_time():
|
||||||
return_url = request.form.get('return_url', url_for('index'))
|
return_url = request.form.get('return_url', url_for('index'))
|
||||||
return redirect(return_url)
|
return redirect(return_url)
|
||||||
|
|
||||||
|
@app.route('/change-username')
|
||||||
|
def change_username():
|
||||||
|
"""Clear username cookie and redirect to index"""
|
||||||
|
response = make_response(redirect(url_for('index')))
|
||||||
|
response.set_cookie('last_username', '', expires=0) # Clear the cookie
|
||||||
|
return response
|
||||||
|
|
||||||
@app.route('/<username>')
|
@app.route('/<username>')
|
||||||
def dashboard_current(username):
|
def dashboard_current(username):
|
||||||
"""Dashboard for current NFL week"""
|
"""Dashboard for current NFL week"""
|
||||||
|
|
@ -161,7 +177,10 @@ def dashboard_current(username):
|
||||||
nfl_state = sleeper_api.get_nfl_state()
|
nfl_state = sleeper_api.get_nfl_state()
|
||||||
current_week = nfl_state.get('week', 1)
|
current_week = nfl_state.get('week', 1)
|
||||||
print(f"DEBUG: Current week: {current_week}", flush=True)
|
print(f"DEBUG: Current week: {current_week}", flush=True)
|
||||||
return dashboard(username, current_week)
|
response = make_response(dashboard(username, current_week))
|
||||||
|
# Set cookie to remember this username (expires in 30 days)
|
||||||
|
response.set_cookie('last_username', username, max_age=30*24*60*60)
|
||||||
|
return response
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"ERROR: dashboard_current exception - {str(e)}", flush=True)
|
print(f"ERROR: dashboard_current exception - {str(e)}", flush=True)
|
||||||
print(f"ERROR: Full traceback: {traceback.format_exc()}", flush=True)
|
print(f"ERROR: Full traceback: {traceback.format_exc()}", flush=True)
|
||||||
|
|
@ -172,7 +191,10 @@ def dashboard_current(username):
|
||||||
def dashboard_week(username, week):
|
def dashboard_week(username, week):
|
||||||
"""Dashboard for specific week"""
|
"""Dashboard for specific week"""
|
||||||
print(f"DEBUG: Dashboard week - username: '{username}', week: {week}", flush=True)
|
print(f"DEBUG: Dashboard week - username: '{username}', week: {week}", flush=True)
|
||||||
return dashboard(username, week)
|
response = make_response(dashboard(username, week))
|
||||||
|
# Set cookie to remember this username (expires in 30 days)
|
||||||
|
response.set_cookie('last_username', username, max_age=30*24*60*60)
|
||||||
|
return response
|
||||||
|
|
||||||
@app.route('/<username>/<int:week>/refresh', methods=['POST'])
|
@app.route('/<username>/<int:week>/refresh', methods=['POST'])
|
||||||
def refresh_scores(username, week):
|
def refresh_scores(username, week):
|
||||||
|
|
|
||||||
|
|
@ -927,6 +927,45 @@ body {
|
||||||
transform: translateY(-1px);
|
transform: translateY(-1px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Smaller refresh button */
|
||||||
|
.refresh-btn-small {
|
||||||
|
background: var(--accent);
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.refresh-btn-small:hover {
|
||||||
|
background: var(--accent-hover);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change username button */
|
||||||
|
.change-username-btn {
|
||||||
|
background: var(--bg-secondary);
|
||||||
|
color: var(--text-primary);
|
||||||
|
border: 1px solid var(--border-primary);
|
||||||
|
border-radius: 4px;
|
||||||
|
padding: 4px 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
text-decoration: none;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s ease;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.change-username-btn:hover {
|
||||||
|
background: var(--bg-tertiary);
|
||||||
|
border-color: var(--accent);
|
||||||
|
color: var(--accent);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
|
||||||
/* Timezone info */
|
/* Timezone info */
|
||||||
.timezone-info {
|
.timezone-info {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
|
|
|
||||||
|
|
@ -12,11 +12,12 @@
|
||||||
<span class="current-week">Week {{ week }}</span>
|
<span class="current-week">Week {{ week }}</span>
|
||||||
<a href="/{{ user.username }}/{{ week + 1 }}{% if is_debug_mode %}?debug=true{% endif %}" class="week-btn">Week {{ week + 1 }} →</a>
|
<a href="/{{ user.username }}/{{ week + 1 }}{% if is_debug_mode %}?debug=true{% endif %}" class="week-btn">Week {{ week + 1 }} →</a>
|
||||||
</div>
|
</div>
|
||||||
<!-- Server-side refresh -->
|
<!-- Server-side refresh and navigation -->
|
||||||
<div class="refresh-nav">
|
<div class="refresh-nav">
|
||||||
<form method="post" action="/{{ user.username }}/{{ week }}/refresh{% if is_debug_mode %}?debug=true{% endif %}" style="display: inline;">
|
<form method="post" action="/{{ user.username }}/{{ week }}/refresh{% if is_debug_mode %}?debug=true{% endif %}" style="display: inline;">
|
||||||
<button type="submit" class="refresh-btn">🔄 Refresh Scores</button>
|
<button type="submit" class="refresh-btn-small">Refresh</button>
|
||||||
</form>
|
</form>
|
||||||
|
<a href="/change-username" class="change-username-btn">Change Username</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Debug Time Picker (only shown when ?debug=true) -->
|
<!-- Debug Time Picker (only shown when ?debug=true) -->
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
|
|
||||||
<!-- Username input form -->
|
<!-- Username input form -->
|
||||||
<form class="username-form" method="get" action="/dashboard">
|
<form class="username-form" method="get" action="/dashboard">
|
||||||
<input type="text" name="username" placeholder="Enter Sleeper username" required>
|
<input type="text" name="username" placeholder="Enter Sleeper username" value="{{ last_username }}" required>
|
||||||
<button type="submit">View Dashboard</button>
|
<button type="submit">View Dashboard</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue