challenge-template / tabs /registration.py
Emma Scharfmann
add template for challenge
e1ce262
Raw
History Blame Contribute Delete
1.8 kB
"""Registration tab – collects participant info and saves it to HF dataset."""
import gradio as gr
from utils import add_registration, load_registrations
def _register(name: str, email: str, affiliation: str, team_name: str):
name, email, affiliation, team_name = (
name.strip(), email.strip(), affiliation.strip(), team_name.strip()
)
if not all([name, email, team_name]):
return gr.update(value="⚠️ Name, e-mail, and team name are required.", visible=True)
# Simple duplicate check
df = load_registrations()
if not df.empty and (df["email"] == email).any():
return gr.update(value="⚠️ This e-mail is already registered.", visible=True)
try:
add_registration(name, email, affiliation, team_name)
return gr.update(
value=f"✅ **{team_name}** successfully registered!", visible=True
)
except Exception as exc:
return gr.update(value=f"❌ Registration failed: {exc}", visible=True)
def build_registration_tab() -> None:
gr.Markdown("## Register your team")
gr.Markdown(
"Fill in the form below. Each e-mail address can only be registered once."
)
with gr.Row():
with gr.Column():
name = gr.Textbox(label="Full name", placeholder="Jane Doe")
email = gr.Textbox(label="E-mail", placeholder="jane@example.com")
affil = gr.Textbox(label="Affiliation", placeholder="University / Company")
team_name = gr.Textbox(label="Team name", placeholder="Team Awesome")
submit = gr.Button("Register", variant="primary")
status = gr.Markdown(visible=False)
submit.click(
fn=_register,
inputs=[name, email, affil, team_name],
outputs=status,
)