com3dian commited on
Commit
abed169
Β·
verified Β·
1 Parent(s): b025fdd

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +31 -40
src/streamlit_app.py CHANGED
@@ -1,57 +1,48 @@
1
- import gradio as gr
2
  import pandas as pd
3
  import os
4
  import datetime
 
 
5
 
6
- from google_sheet import fetch_leaderboard
7
  from google_drive import upload_to_drive
8
 
9
- os.makedirs("submissions", exist_ok=True)
10
 
11
- def get_leaderboard_html():
12
- try:
13
- df = fetch_leaderboard()
14
- if df.empty:
15
- return "<p>No submissions yet.</p>"
16
- df_sorted = df.sort_values(by="score", ascending=False)
17
- return df_sorted.to_html(index=False)
18
- except Exception as e:
19
- return f"<p>Could not load leaderboard: {e}</p>"
20
 
21
- def handle_submission(file):
22
- if file is None:
23
- return "❌ No file uploaded.", "<p>No leaderboard to show.</p>"
24
-
25
- timestamp = datetime.datetime.now().isoformat().replace(":", "_")
26
- submission_filename = f"{timestamp}_{file.name}"
27
  submission_path = os.path.join("submissions", submission_filename)
 
28
 
 
29
  with open(submission_path, "wb") as f:
30
- f.write(file.read())
31
 
32
  try:
33
  drive_file_id = upload_to_drive(submission_path, submission_filename)
34
- status = f"βœ… Uploaded to Google Drive [File ID: {drive_file_id}]"
35
  except Exception as e:
36
- status = f"⚠️ Failed to upload to Google Drive: {e}"
37
-
38
- leaderboard_html = get_leaderboard_html()
39
- return status, leaderboard_html
40
 
41
- with gr.Blocks(title="πŸ† Hackathon Leaderboard") as demo:
42
- gr.Markdown("## πŸ† Hackathon Leaderboard")
 
 
43
 
44
- with gr.Row():
45
- file_input = gr.File(label="Upload your submission (.zip)", file_types=[".zip"])
46
- submit_btn = gr.Button("Submit")
47
-
48
- status_output = gr.Markdown()
49
- leaderboard_output = gr.HTML(get_leaderboard_html())
50
-
51
- submit_btn.click(
52
- fn=handle_submission,
53
- inputs=file_input,
54
- outputs=[status_output, leaderboard_output]
55
- )
56
-
57
- demo.launch(share=True)
 
1
+ import streamlit as st
2
  import pandas as pd
3
  import os
4
  import datetime
5
+ import dill as pickle
6
+ import inspect
7
 
8
+ from google_sheet import *
9
  from google_drive import upload_to_drive
10
 
11
+ st.title("πŸ† Hackathon Leaderboard")
12
 
13
+ # ========================
14
+ # Submission Form
15
+ # ========================
16
+ import uuid
17
+ uploaded_file = st.file_uploader("Upload your submission (.zip)", type=["zip"], key=str(uuid.uuid4()))
 
 
 
 
18
 
19
+ if uploaded_file and st.button("Submit"):
20
+ timestamp = datetime.datetime.now().isoformat()
21
+ submission_filename = f"{timestamp.replace(':', '_')}_{uploaded_file.name}"
 
 
 
22
  submission_path = os.path.join("submissions", submission_filename)
23
+ os.makedirs("submissions", exist_ok=True)
24
 
25
+ # Save uploaded file
26
  with open(submission_path, "wb") as f:
27
+ f.write(uploaded_file.read())
28
 
29
  try:
30
  drive_file_id = upload_to_drive(submission_path, submission_filename)
31
+ st.success(f"Uploaded to Google Drive βœ… [File ID: {drive_file_id}]")
32
  except Exception as e:
33
+ st.warning(f"Failed to upload to Google Drive: {e}")
 
 
 
34
 
35
+ # ========================
36
+ # Always Show Leaderboard
37
+ # ========================
38
+ st.subheader("Leaderboard")
39
 
40
+ try:
41
+ df = fetch_leaderboard()
42
+ if not df.empty:
43
+ df_sorted = df.sort_values(by="score", ascending=False)
44
+ st.dataframe(df_sorted)
45
+ else:
46
+ st.info("No submissions yet.")
47
+ except Exception as e:
48
+ st.warning(f"Could not load leaderboard: {e}")