empower-reports / pages /admin_pages.py
mikaelJ46's picture
Create pages/admin_pages.py
a48732f verified
raw
history blame
3.27 kB
# 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")