import gradio as gr import pandas as pd # === Google Sheets === MAIN_SHEET_ID = "1cUBISFNCHqS9Ru_jBlYZgF8vb-e25wq8gC0PoT3cHlg" MAIN_SHEET_NAME = "Sheet1" ANNOUNCEMENT_SHEET_ID = "1B-Vhgi0BSi8iKR4_Y5ICOcf5cDd73atzq71wU17cCTs" ANNOUNCEMENT_SHEET_NAME = "Sheet1" # === URLs === main_csv_url = f"https://docs.google.com/spreadsheets/d/{MAIN_SHEET_ID}/gviz/tq?tqx=out:csv&sheet={MAIN_SHEET_NAME}" announcement_csv_url = f"https://docs.google.com/spreadsheets/d/{ANNOUNCEMENT_SHEET_ID}/gviz/tq?tqx=out:csv&sheet={ANNOUNCEMENT_SHEET_NAME}" # === Password === ADMIN_PASSWORD = "1234" # change this if needed # === Fetch Functions === def fetch_data(): try: df = pd.read_csv(main_csv_url) df = df.head(10) return df except Exception as e: return pd.DataFrame({"Error": [f"Failed to fetch main data: {e}"]}) def fetch_announcements(): try: df = pd.read_csv(announcement_csv_url) return df except Exception as e: return pd.DataFrame({"Error": [f"Failed to fetch announcements: {e}"]}) # === Convert DataFrame to Cards === def df_to_cards(df, page_name="Main"): if df.empty: return "
No data found.
" html = "Details: {', '.join(map(str, row.values[1:]))}
❌ Incorrect password.
", ) refresh_btn.click(refresh_main, outputs=main_cards) admin_btn.click(go_admin, outputs=[main_page, password_page, admin_page]) submit_pass.click(verify_password, inputs=password_input, outputs=[main_page, password_page, admin_page, admin_cards]) back_btn.click(lambda: (gr.update(visible=True), gr.update(visible=False), gr.update(visible=False)), outputs=[main_page, password_page, admin_page]) # Load initial data demo.load(refresh_main, outputs=main_cards) demo.launch(share=True)