Spaces:
Sleeping
Sleeping
Download src/utils.py from raymondEDS/debate_LMS: direct link, hf CLI and curl.
- Browser
- Download file 2.93 kB
-
https://huggingface.co/spaces/raymondEDS/debate_LMS/resolve/main/src/utils.py
- Command line
-
hf download hf://spaces/raymondEDS/debate_LMS/src/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/raymondEDS/debate_LMS/resolve/main/src/utils.py
2.93 kB
| import streamlit as st | |
| from supabase import create_client, Client | |
| import os | |
| import json | |
| from datetime import datetime | |
| def init_supabase(): | |
| """Initialize Supabase client""" | |
| try: | |
| url = st.secrets.get("SUPABASE_URL") | |
| key = st.secrets.get("SUPABASE_KEY") | |
| except: | |
| url = os.getenv("SUPABASE_URL") | |
| key = os.getenv("SUPABASE_KEY") | |
| if not url or not key: | |
| st.error("Supabase credentials not found.") | |
| return None | |
| return create_client(url, key) | |
| def save_submission(username, week_number, submission_type, submission_data, score=None, max_score=None): | |
| """Save a student submission to the database""" | |
| supabase = init_supabase() | |
| if not supabase: | |
| return False | |
| try: | |
| data = { | |
| 'username': username, | |
| 'week_number': week_number, | |
| 'submission_type': submission_type, | |
| 'submission_data': submission_data, | |
| 'score': score, | |
| 'max_score': max_score | |
| } | |
| response = supabase.table('student_submissions').insert(data).execute() | |
| return True | |
| except Exception as e: | |
| st.error(f"Error saving submission: {str(e)}") | |
| return False | |
| def get_existing_submission(username, week_number, submission_type): | |
| """Get the most recent submission for a student""" | |
| supabase = init_supabase() | |
| if not supabase: | |
| return None | |
| try: | |
| response = supabase.table('student_submissions').select('*').eq('username', username).eq('week_number', week_number).eq('submission_type', submission_type).order('submitted_at', desc=True).limit(1).execute() | |
| if response.data: | |
| return response.data[0] | |
| return None | |
| except Exception as e: | |
| st.error(f"Error retrieving submission: {str(e)}") | |
| return None | |
| def get_all_submissions(username, week_number, submission_type): | |
| """Get all submissions for a student (for history)""" | |
| supabase = init_supabase() | |
| if not supabase: | |
| return [] | |
| try: | |
| response = supabase.table('student_submissions').select('*').eq('username', username).eq('week_number', week_number).eq('submission_type', submission_type).order('submitted_at', desc=True).execute() | |
| return response.data if response.data else [] | |
| except Exception as e: | |
| st.error(f"Error retrieving submissions: {str(e)}") | |
| return [] | |
| def get_student_debate_case(username): | |
| """Get the student's debate case Google Doc link""" | |
| supabase = init_supabase() | |
| if not supabase: | |
| return None | |
| try: | |
| response = supabase.table('student_debate_case').select('*').eq('student_id', username).order('created_at', desc=True).limit(1).execute() | |
| if response.data: | |
| return response.data[0] | |
| return None | |
| except Exception as e: | |
| st.error(f"Error retrieving debate case: {str(e)}") | |
| return None |