debate_LMS / src /utils.py
raymondEDS's picture
week 4 contents
e74c738
Raw History Blame Contribute Delete
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