Spaces:
Runtime error
Runtime error
Update app/routes.py
Browse files- app/routes.py +31 -6
app/routes.py
CHANGED
|
@@ -219,7 +219,6 @@ def resend_verification():
|
|
| 219 |
return render_template('resend_verification.html')
|
| 220 |
|
| 221 |
|
| 222 |
-
|
| 223 |
@auth.route('/dashboard')
|
| 224 |
def dashboard():
|
| 225 |
if 'user_id' not in session:
|
|
@@ -227,17 +226,43 @@ def dashboard():
|
|
| 227 |
return redirect(url_for('auth.login'))
|
| 228 |
|
| 229 |
user_id = session['user_id']
|
| 230 |
-
|
|
|
|
|
|
|
| 231 |
f"{SUPABASE_URL}/rest/v1/users?id=eq.{user_id}&select=*",
|
| 232 |
headers=HEADERS
|
| 233 |
)
|
| 234 |
-
|
| 235 |
-
if res.status_code != 200 or not res.json():
|
| 236 |
flash('User not found.')
|
| 237 |
return redirect(url_for('auth.login'))
|
|
|
|
| 238 |
|
| 239 |
-
user
|
| 240 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 241 |
|
| 242 |
@auth.route('/generate-api', methods=['GET', 'POST'])
|
| 243 |
def generate_api():
|
|
|
|
| 219 |
return render_template('resend_verification.html')
|
| 220 |
|
| 221 |
|
|
|
|
| 222 |
@auth.route('/dashboard')
|
| 223 |
def dashboard():
|
| 224 |
if 'user_id' not in session:
|
|
|
|
| 226 |
return redirect(url_for('auth.login'))
|
| 227 |
|
| 228 |
user_id = session['user_id']
|
| 229 |
+
|
| 230 |
+
# Fetch user info
|
| 231 |
+
user_res = requests.get(
|
| 232 |
f"{SUPABASE_URL}/rest/v1/users?id=eq.{user_id}&select=*",
|
| 233 |
headers=HEADERS
|
| 234 |
)
|
| 235 |
+
if user_res.status_code != 200 or not user_res.json():
|
|
|
|
| 236 |
flash('User not found.')
|
| 237 |
return redirect(url_for('auth.login'))
|
| 238 |
+
user = user_res.json()[0]
|
| 239 |
|
| 240 |
+
# Fetch user's resume uploads
|
| 241 |
+
uploads_res = requests.get(
|
| 242 |
+
f"{SUPABASE_URL}/rest/v1/resume-api?user_id=eq.{user_id}&select=*",
|
| 243 |
+
headers=HEADERS
|
| 244 |
+
)
|
| 245 |
+
|
| 246 |
+
analytics = {
|
| 247 |
+
'average_score': None,
|
| 248 |
+
'top_resume': None,
|
| 249 |
+
'last_upload_date': None
|
| 250 |
+
}
|
| 251 |
+
|
| 252 |
+
if uploads_res.status_code == 200:
|
| 253 |
+
uploads = uploads_res.json()
|
| 254 |
+
if uploads:
|
| 255 |
+
scores = [u['score'] for u in uploads if u.get('score') is not None]
|
| 256 |
+
if scores:
|
| 257 |
+
analytics['average_score'] = round(sum(scores) / len(scores), 2)
|
| 258 |
+
|
| 259 |
+
top = max(uploads, key=lambda x: x.get('score', 0))
|
| 260 |
+
analytics['top_resume'] = top.get('resume_name', 'N/A')
|
| 261 |
+
|
| 262 |
+
last_upload = max(uploads, key=lambda x: x.get('upload_date', ''))
|
| 263 |
+
analytics['last_upload_date'] = last_upload.get('upload_date', '')[:16] # YYYY-MM-DD HH:MM
|
| 264 |
+
|
| 265 |
+
return render_template('dashboard.html', user=user, analytics=analytics)
|
| 266 |
|
| 267 |
@auth.route('/generate-api', methods=['GET', 'POST'])
|
| 268 |
def generate_api():
|