import streamlit as st from datetime import datetime # Import our modules from auth import show_login_page, handle_logout, is_authenticated from views.week1 import show_week1_content from views.week2 import show_week2_content from views.week3 import show_week3_content from views.week4 import show_week4_content from views.resources import show_resources from views.user_management import show_user_management from views.instructor_notes import show_instructor_notes # Page configuration st.set_page_config( page_title="Cura Learning Debate Class", page_icon="🎭", layout="wide", initial_sidebar_state="expanded" ) # Initialize session state if 'authenticated' not in st.session_state: st.session_state.authenticated = False if 'username' not in st.session_state: st.session_state.username = None if 'name' not in st.session_state: st.session_state.name = None if 'current_page' not in st.session_state: st.session_state.current_page = None def clear_page_cache(): """Clear any cached components when navigating to a new page""" # Clear any form data or cached components for key in list(st.session_state.keys()): if key.startswith('form_') or key.startswith('cached_'): del st.session_state[key] def clear_all_page_components(): """Clear all page-specific components to prevent leakage""" keys_to_keep = ['authenticated', 'username', 'name', 'current_page'] keys_to_remove = [] for key in st.session_state.keys(): if key not in keys_to_keep: keys_to_remove.append(key) for key in keys_to_remove: del st.session_state[key] def show_main_application(): """Show the main application after successful login""" # Sidebar for navigation and user info with st.sidebar: st.title("🎭 Cura Learning Debate Class") st.markdown("---") # User info st.markdown(f"**Welcome, {st.session_state.name}!**") st.markdown(f"*{st.session_state.username}*") st.markdown("---") # Navigation page = st.selectbox( "Course Navigation", ["Week 1: Introduction to Debate", "Week 2: Research & Evidence", "Week 3: How to Do a Case", "Week 4: Traditional LD Framework", "User Management", "Instructor Notes"] ) st.markdown("---") # Logout button handle_logout() # Check if page has changed and clear cache if needed if st.session_state.current_page != page: clear_all_page_components() st.session_state.current_page = page # Force a complete page refresh st.rerun() # Main content area if page == "Week 1: Introduction to Debate": show_week1_content() elif page == "Week 2: Research & Evidence": show_week2_content() elif page == "Week 3: How to Do a Case": show_week3_content() elif page == "Week 4: Traditional LD Framework": show_week4_content() elif page == "User Management": show_user_management() elif page == "Instructor Notes": show_instructor_notes() def main(): # Check if user is authenticated if not is_authenticated(): show_login_page() else: show_main_application() if __name__ == "__main__": main()