Spaces:
Sleeping
Sleeping
| 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() |