Spaces:
Sleeping
Sleeping
| # pages/admin_pages.py - Admin pages | |
| import streamlit as st | |
| from modules.database import Session, User, Student, AcademicTerm | |
| from modules.storage import backup_database | |
| def show_admin_menu(): | |
| """Show admin menu and handle routing""" | |
| page = st.sidebar.selectbox("Menu", [ | |
| "Dashboard", "Admin Management", "Staff Management", | |
| "Student Enrollment", "Academic Calendar", "Storage Management" | |
| ]) | |
| if page == "Dashboard": | |
| from pages import dashboard | |
| dashboard.show() | |
| elif page == "Admin Management": | |
| show_admin_management() | |
| elif page == "Staff Management": | |
| show_staff_management() | |
| elif page == "Student Enrollment": | |
| show_student_enrollment() | |
| elif page == "Academic Calendar": | |
| show_academic_calendar() | |
| elif page == "Storage Management": | |
| show_storage_management() | |
| def show_admin_management(): | |
| """Admin management page""" | |
| st.header("π Admin Management") | |
| session = Session() | |
| tab1, tab2 = st.tabs(["View Admins", "Add Admin"]) | |
| with tab1: | |
| st.subheader("All Administrators") | |
| admins = session.query(User).filter_by(role='admin').all() | |
| if admins: | |
| for admin in admins: | |
| st.write(f"β’ {admin.name} ({admin.email})") | |
| else: | |
| st.info("No other admins") | |
| with tab2: | |
| st.subheader("Add New Administrator") | |
| with st.form("add_admin"): | |
| name = st.text_input("Full Name") | |
| email = st.text_input("Email") | |
| password = st.text_input("Password", type="password") | |
| if st.form_submit_button("Add Admin"): | |
| if name and email and password: | |
| from modules.auth import authenticate_user | |
| # Add admin logic here | |
| st.success("Admin added successfully") | |
| session.close() | |
| def show_staff_management(): | |
| """Staff management page""" | |
| st.header("π₯ Staff Management") | |
| session = Session() | |
| # Staff management logic | |
| st.info("Staff management functionality") | |
| session.close() | |
| def show_student_enrollment(): | |
| """Student enrollment page""" | |
| st.header("π Student Enrollment") | |
| session = Session() | |
| # Student enrollment logic | |
| st.info("Student enrollment functionality") | |
| session.close() | |
| def show_academic_calendar(): | |
| """Academic calendar page""" | |
| st.header("π Academic Calendar") | |
| session = Session() | |
| # Academic calendar logic | |
| st.info("Academic calendar functionality") | |
| session.close() | |
| def show_storage_management(): | |
| """Storage management page""" | |
| st.header("πΎ Storage Management") | |
| st.subheader("Database Backup") | |
| if st.button("Create Backup", use_container_width=True): | |
| success, message = backup_database() | |
| if success: | |
| st.success(message) | |
| else: | |
| st.error(message) | |
| # Storage statistics | |
| st.subheader("Storage Statistics") | |
| try: | |
| import os | |
| db_size = os.path.getsize(os.environ.get('DB_PATH', './empower.db')) / (1024 * 1024) | |
| st.metric("Database Size", f"{db_size:.2f} MB") | |
| except: | |
| st.metric("Database Size", "Unknown") |