louiecerv's picture
Add the header and footer
f480456
# app.py
import streamlit as st
from uac_helper import UACHelper
from user_management import add_user, authenticate_user, load_settings, save_settings, generate_prompt, initialize_database
import page_components
# Initialize the database
initialize_database()
def settings_page(username):
page_components.app_header()
"""Displays the settings page with user-specific settings."""
st.title("Chat with AI")
settings = load_settings(username)
# User-specific settings form
topic = st.text_area("Topic", value=settings.get("topic", ""), key="topic")
instructions = st.text_area("Custom Instructions", value=settings.get("instructions", ""), key="instructions")
if st.button("Generate Prompt"):
settings = {"topic": topic, "instructions": instructions}
save_settings(username, settings)
result = generate_prompt(topic, instructions)
st.success(result)
page_components.app_footer()
def main():
"""Main function for the Streamlit app."""
# Initialize UACHelper
uac = UACHelper()
# Navigation between pages
if st.session_state.page == "Login":
uac.login_page()
elif st.session_state.page == "Sign Up":
uac.sign_up_page()
elif st.session_state.page == "Main Page":
if uac.is_authenticated():
settings_page(uac.get_username())
else:
st.error("You must log in to access this page.")
st.session_state.page = "Login"
# Sidebar for navigation
st.sidebar.title("Navigation")
if uac.is_authenticated():
if st.sidebar.button("Go to Main Page"):
st.session_state.page = "Main Page"
if st.sidebar.button("Logout", on_click=uac.logout): # Use on_click for callback
pass # No need to call uac.logout() here
else:
st.sidebar.radio(
"Go to",
["Login", "Sign Up"],
key="sidebar_nav",
on_change=lambda: st.session_state.update(page=st.session_state.sidebar_nav)
)
if __name__ == "__main__":
main()