Spaces:
Sleeping
Sleeping
import streamlit as st | |
import os | |
import pickle | |
# Define the file to store user preferences | |
PREFERENCES_FILE = "user_preferences.pkl" | |
def load_preferences(): | |
"""Load preferences from the file.""" | |
if os.path.exists(PREFERENCES_FILE): | |
with open(PREFERENCES_FILE, "rb") as f: | |
return pickle.load(f) | |
return {} | |
def save_preferences(preferences): | |
"""Save preferences to the file.""" | |
with open(PREFERENCES_FILE, "wb") as f: | |
pickle.dump(preferences, f) | |
def save_user_preferences(username, topic, difficulty, num_items, preferences): | |
"""Save preferences for the user.""" | |
preferences[username] = { | |
"topic": topic, | |
"difficulty": difficulty, | |
"num_items": num_items | |
} | |
save_preferences(preferences) | |
st.success("Preferences saved successfully!") | |
def go_to_quiz(): | |
"""Callback to navigate to the quiz form.""" | |
st.session_state["page"] = "quiz" | |
def go_to_result(): | |
"""Callback to navigate to the result form.""" | |
st.session_state["page"] = "result" | |
def go_to_main(): | |
"""Callback to navigate to the main form.""" | |
st.session_state["page"] = "main" | |
def display_username(): | |
"""Display the username at the top of each page.""" | |
if "username" in st.session_state: | |
st.sidebar.write(f"**User:** {st.session_state['username']}") | |
def main_form(preferences): | |
"""Main form where the user interacts with the AI.""" | |
st.title("Main Form - Prompt AI") | |
# Ask for username | |
username = st.text_input("Enter your username:", placeholder="Username") | |
if username: | |
# Retrieve user-specific preferences if available | |
user_data = preferences.get(username, { | |
"topic": "", | |
"difficulty": "easy", | |
"num_items": 5 | |
}) | |
# Preference inputs | |
topic = st.text_input("Preferred Topic:", value=user_data["topic"], placeholder="Enter a topic") | |
difficulty = st.selectbox("Difficulty Level:", ["easy", "average", "hard"], index=["easy", "average", "hard"].index(user_data["difficulty"])) | |
num_items = st.selectbox("Number of Items:", [5, 10, 15], index=[5, 10, 15].index(user_data["num_items"])) | |
# Save and proceed button | |
st.button("Ask AI", on_click=lambda: save_user_preferences(username, topic, difficulty, num_items, preferences) or go_to_quiz()) | |
def quiz_form(): | |
"""Quiz form where the user takes the test.""" | |
st.title("Quiz Form - Take the Test") | |
st.write("This is the quiz form. Add your quiz logic here.") | |
# Button to show results | |
st.button("Submit Quiz and Show Results", on_click=go_to_result) | |
def result_form(): | |
"""Result form displayed after the quiz.""" | |
st.title("Result Form - Quiz Results") | |
st.write("This is the result form. Add your result display logic here.") | |
# Button to return to main form | |
st.button("Back to Main Form", on_click=go_to_main) | |
def main(): | |
"""Main app function.""" | |
# Load preferences | |
preferences = load_preferences() | |
# Initialize session state | |
if "page" not in st.session_state: | |
st.session_state["page"] = "main" | |
# Display username | |
display_username() | |
# Render the appropriate page | |
if st.session_state["page"] == "main": | |
main_form(preferences) | |
elif st.session_state["page"] == "quiz": | |
quiz_form() | |
elif st.session_state["page"] == "result": | |
result_form() | |
if __name__ == "__main__": | |
main() | |