Spaces:
Running
Running
File size: 2,939 Bytes
29cc4c5 0759822 90cb4f4 bfa9b50 fa1e621 90cb4f4 0759822 0960577 bfa9b50 29cc4c5 90cb4f4 0960577 90cb4f4 4f7c053 46dae9a 4f7c053 46dae9a 4f7c053 90cb4f4 46dae9a 0960577 29cc4c5 4f7c053 90cb4f4 46dae9a 90cb4f4 46dae9a 0759822 8c97b83 fa1e621 8c97b83 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
from db.schema import Feedback, Response
from db.crud import save_feedback, read
import streamlit as st
from datetime import datetime
import os
from dotenv import load_dotenv
from views.ui_helpers import display_completion_message
load_dotenv()
VALIDATION_CODE = os.getenv("VALIDATION_CODE")
def submit_feedback(current_index):
"""Handles feedback submission to the database."""
feedback = Feedback(
id=current_index + 1,
user_id=st.session_state.username,
time_stamp=datetime.now().isoformat(),
responses=st.session_state.responses,
)
try:
save_feedback(feedback)
st.session_state.completed = True
st.rerun()
except Exception as e:
st.error(f"An error occurred while submitting feedback: {e}")
def flatten_ratings(response):
all_ratings = []
for model_ratings in response.model_ratings.values():
all_ratings.extend(model_ratings.query_v_ratings.values())
all_ratings.extend(model_ratings.query_p0_ratings.values())
all_ratings.extend(model_ratings.query_p1_ratings.values())
return all_ratings
def navigation_buttons(data, response: Response):
"""Display navigation buttons."""
current_index = st.session_state.current_index
col1, col2, col3 = st.columns([1, 1, 2])
with col1: # Back button #TODO fix: only gets ratings for the session, not from previous session
if st.button("Back", disabled=st.session_state.current_index == 0):
if current_index > 0:
st.session_state.previous_ratings[
data.iloc[st.session_state.current_index]['config_id']] = response.model_ratings
st.session_state.current_index -= 1
st.rerun()
else:
st.warning("You are at the beginning of the survey, can't go back.")
# st.rerun()
with col2: # Next button TODO might be buggy
if st.button("Next", disabled=st.session_state.current_index == len(data) - 1):
all_ratings = flatten_ratings(response)
if any(rating == 0 for rating in all_ratings):
st.warning("Please provide all ratings before proceeding.")
else:
if current_index < len(data) - 1:
st.session_state.previous_ratings[data.iloc[st.session_state.current_index]['config_id']] = response.model_ratings
st.session_state.current_index += 1
st.rerun()
else:
if st.button("Finish"):
submit_feedback(current_index)
with col3: # Save & Resume Later button
if st.button("Exit & Resume Later"):
submit_feedback(current_index)
if st.session_state.current_index == len(data) - 1:
st.session_state.completed = True
display_completion_message()
# st.rerun() |