com3dian commited on
Commit
db4f343
Β·
verified Β·
1 Parent(s): 0bcddf9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -55
app.py CHANGED
@@ -1,90 +1,81 @@
1
- import io
2
- import random
3
- from typing import List, Tuple
4
-
5
- import aiohttp
6
- import panel as pn
7
- from PIL import Image
8
- from transformers import CLIPModel, CLIPProcessor
9
-
10
- pn.extension(design="bootstrap", sizing_mode="stretch_width")
11
  import panel as pn
12
  import pandas as pd
13
- import os
14
- import datetime
15
- import io
16
 
17
  from google_sheet import fetch_leaderboard
18
  from google_drive import upload_to_drive
19
 
20
- pn.extension()
21
 
22
- # File upload widget
23
  file_input = pn.widgets.FileInput(accept='.zip', multiple=False)
 
 
 
24
 
25
- # Status message
26
- status = pn.pane.Markdown("")
27
-
28
- # Leaderboard display
29
- leaderboard = pn.pane.DataFrame(pd.DataFrame(), width=600)
30
- import tempfile
31
-
32
  temp_dir = tempfile.gettempdir()
33
 
 
34
  def submit_file(event):
35
  if file_input.value is None:
36
  status.object = "⚠️ Please upload a .zip file before submitting."
 
 
37
  return
38
 
39
  try:
40
- # Extract filename
41
  filename = file_input.filename
42
  submission_path = os.path.join(temp_dir, filename)
43
 
44
- # Save uploaded content to temp file
45
  with open(submission_path, "wb") as f:
46
  f.write(file_input.value)
47
 
48
- # Upload to Google Drive
49
  drive_file_id = upload_to_drive(submission_path, filename)
50
- status.object = f"βœ… Uploaded to Google Drive [File ID: {drive_file_id}]"
 
 
51
  except Exception as e:
52
- status.object = f"❌ Failed to upload to Google Drive: {e}"
53
- return # Exit early on failure
 
 
 
 
 
 
 
54
 
55
- # Update leaderboard
 
56
  try:
57
  df = fetch_leaderboard()
58
  if not df.empty:
59
- df_sorted = df.sort_values(by="score", ascending=False)
60
- leaderboard.object = df_sorted
61
  else:
62
  leaderboard.object = pd.DataFrame()
63
  except Exception as e:
64
- status.object += f"\n⚠️ Could not load leaderboard: {e}"
65
-
66
- submit_button = pn.widgets.Button(name="Submit", button_type="primary")
67
- submit_button.on_click(submit_file)
68
-
69
- # Initial leaderboard load
70
- try:
71
- df = fetch_leaderboard()
72
- if not df.empty:
73
- df_sorted = df.sort_values(by="score", ascending=False)
74
- leaderboard.object = df_sorted
75
- else:
76
- leaderboard.object = pd.DataFrame()
77
- except Exception as e:
78
- status.object += f"\n⚠️ Could not load leaderboard on startup: {e}"
79
-
80
- # Layout
81
- app = pn.Column(
82
- "## πŸ† Hackathon Leaderboard",
83
- file_input,
84
- submit_button,
85
- status,
86
- "### Leaderboard",
87
- leaderboard
88
  )
89
 
90
  app.servable()
 
1
+ import os
2
+ import tempfile
 
 
 
 
 
 
 
 
3
  import panel as pn
4
  import pandas as pd
 
 
 
5
 
6
  from google_sheet import fetch_leaderboard
7
  from google_drive import upload_to_drive
8
 
9
+ pn.extension(design="bootstrap", sizing_mode="stretch_width")
10
 
11
+ # Widgets
12
  file_input = pn.widgets.FileInput(accept='.zip', multiple=False)
13
+ submit_button = pn.widgets.Button(name="πŸ“€ Submit", button_type="primary")
14
+ status = pn.pane.Alert("", alert_type="info", visible=False)
15
+ leaderboard = pn.pane.DataFrame(pd.DataFrame(), width=800, height=400, index=False)
16
 
17
+ # Temp dir
 
 
 
 
 
 
18
  temp_dir = tempfile.gettempdir()
19
 
20
+ # --- Submission logic ---
21
  def submit_file(event):
22
  if file_input.value is None:
23
  status.object = "⚠️ Please upload a .zip file before submitting."
24
+ status.alert_type = "warning"
25
+ status.visible = True
26
  return
27
 
28
  try:
 
29
  filename = file_input.filename
30
  submission_path = os.path.join(temp_dir, filename)
31
 
 
32
  with open(submission_path, "wb") as f:
33
  f.write(file_input.value)
34
 
 
35
  drive_file_id = upload_to_drive(submission_path, filename)
36
+ status.object = f"βœ… Uploaded to Google Drive\n**File ID**: `{drive_file_id}`"
37
+ status.alert_type = "success"
38
+ status.visible = True
39
  except Exception as e:
40
+ status.object = f"❌ Failed to upload: {e}"
41
+ status.alert_type = "danger"
42
+ status.visible = True
43
+ return
44
+
45
+ # Refresh leaderboard
46
+ update_leaderboard()
47
+
48
+ submit_button.on_click(submit_file)
49
 
50
+ # --- Leaderboard logic ---
51
+ def update_leaderboard():
52
  try:
53
  df = fetch_leaderboard()
54
  if not df.empty:
55
+ leaderboard.object = df.sort_values(by="score", ascending=False)
 
56
  else:
57
  leaderboard.object = pd.DataFrame()
58
  except Exception as e:
59
+ status.object = f"⚠️ Could not load leaderboard: {e}"
60
+ status.alert_type = "warning"
61
+ status.visible = True
62
+
63
+ # Initial load
64
+ update_leaderboard()
65
+
66
+ # --- Layout ---
67
+ app = pn.template.BootstrapTemplate(
68
+ title="πŸ† Hackathon Leaderboard",
69
+ sidebar=[
70
+ pn.pane.Markdown("### πŸ“ Upload Your Submission (.zip)"),
71
+ file_input,
72
+ submit_button,
73
+ status,
74
+ ],
75
+ main=[
76
+ pn.pane.Markdown("## πŸ₯‡ Live Leaderboard"),
77
+ leaderboard
78
+ ]
 
 
 
 
79
  )
80
 
81
  app.servable()