Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import os | |
| import datetime | |
| import dill as pickle | |
| import inspect | |
| from google_sheet import * | |
| from google_drive import upload_to_drive | |
| st.title("π Hackathon Leaderboard") | |
| # ======================== | |
| # Submission Form | |
| # ======================== | |
| uploaded_file = st.file_uploader("Upload your submission (.zip)", type=["zip"]) | |
| def is_valid_model(obj): | |
| """ | |
| Check if the object is a class instance with a 'predict' method. | |
| """ | |
| return hasattr(obj, 'get_team') and inspect.ismethod(getattr(obj, 'get_team', None)) or callable(getattr(obj, 'get_team', None)) | |
| if uploaded_file and st.button("Submit"): | |
| timestamp = datetime.datetime.now().isoformat() | |
| submission_filename = f"{timestamp.replace(':', '_')}_{uploaded_file.name}" | |
| submission_path = os.path.join("submissions", submission_filename) | |
| os.makedirs("submissions", exist_ok=True) | |
| # Save uploaded file | |
| with open(submission_path, "wb") as f: | |
| f.write(uploaded_file.read()) | |
| try: | |
| drive_file_id = upload_to_drive(submission_path, submission_filename) | |
| st.success(f"Uploaded to Google Drive β [File ID: {drive_file_id}]") | |
| except Exception as e: | |
| st.warning(f"Failed to upload to Google Drive: {e}") | |
| # ======================== | |
| # Always Show Leaderboard | |
| # ======================== | |
| st.subheader("Leaderboard") | |
| try: | |
| df = fetch_leaderboard() | |
| if not df.empty: | |
| df_sorted = df.sort_values(by="score", ascending=False) | |
| st.dataframe(df_sorted) | |
| else: | |
| st.info("No submissions yet.") | |
| except Exception as e: | |
| st.warning(f"Could not load leaderboard: {e}") | |