user-feedback / app.py
Ashmi Banerjee
somewhat hacky fix but hopefully buttons work as expected
2b2f0d1
raw
history blame
3.14 kB
from utils.loaders import load_data
from db.crud import read
import streamlit as st
import os
from dotenv import load_dotenv
from views.intro_screen import welcome_screen
from views.questions_screen import questions_screen
from views.continue_survey import continue_survey_screen
from css.layout import custom_css
st.set_page_config(layout="wide")
load_dotenv()
VALIDATION_CODE = os.getenv("VALIDATION_CODE")
def initialization():
"""Initialize session state variables."""
if "current_index" not in st.session_state:
st.session_state.current_index = 0
if "username" not in st.session_state:
st.session_state.username = None
if "responses" not in st.session_state:
st.session_state.responses = []
if "completed" not in st.session_state:
st.session_state.completed = False
if "show_questions" not in st.session_state:
st.session_state.show_questions = False
if "survey_continued" not in st.session_state:
st.session_state.survey_continued = None
if "start_new_survey" not in st.session_state:
st.session_state.start_new_survey = False
if 'ratings' not in st.session_state:
st.session_state.ratings = {}
if 'previous_ratings' not in st.session_state:
st.session_state.previous_ratings = {}
def exit_screen():
"""Display exit screen"""
st.markdown("""
<div class='exit-container'>
<h1>Thank you for participating!</h1>
<p>Your responses have been saved successfully.</p>
<p>You can safely close this window or start a new survey.</p>
</div>
""", unsafe_allow_html=True)
# if st.button("Resume Survey"):
# reset_survey()
# st.rerun()
def reset_survey():
"""Reset the survey state to start over."""
st.session_state.responses = []
st.session_state.completed = True
st.session_state.start_new_survey = True
def ui():
"""Main function to control the survey flow."""
custom_css()
data = load_data()
initialization()
if st.session_state.completed and not st.session_state.start_new_survey:
exit_screen()
return
if st.session_state.username is None:
welcome_screen()
else:
# Check if user progress exists in Firebase
saved_state = read(st.session_state.username)
if saved_state:
# If there's saved progress and the survey has not been continued, show continue screen
if "survey_continued" not in st.session_state or not st.session_state.survey_continued:
continue_survey_screen(data)
else:
if st.session_state.current_index >= len(data):
# If all questions have been answered, show the exit screen
print("survey completed")
survey_completed()
# Otherwise, show questions from where they left off
questions_screen(data)
else:
# If no saved progress (new user), start with the questions screen
questions_screen(data)
if __name__ == "__main__":
ui()