Spaces:
Sleeping
Sleeping
added db integration
Browse files- app.py +36 -9
- requirements.txt +2 -1
app.py
CHANGED
|
@@ -1,18 +1,13 @@
|
|
| 1 |
import requests
|
| 2 |
-
import json
|
| 3 |
import os
|
| 4 |
-
import uuid
|
| 5 |
import streamlit as st
|
| 6 |
import math
|
| 7 |
from io import BytesIO
|
| 8 |
from reportlab.lib.pagesizes import letter
|
| 9 |
-
from reportlab.platypus import SimpleDocTemplate, Paragraph
|
| 10 |
-
from reportlab.lib.styles import getSampleStyleSheet
|
| 11 |
-
from
|
| 12 |
-
from reportlab.lib.utils import ImageReader
|
| 13 |
-
from datetime import datetime, timedelta
|
| 14 |
from dotenv import load_dotenv
|
| 15 |
-
from typing import List
|
| 16 |
|
| 17 |
load_dotenv()
|
| 18 |
|
|
@@ -113,6 +108,22 @@ def change_question_type():
|
|
| 113 |
else:
|
| 114 |
st.session_state["question_type"] = "question"
|
| 115 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 116 |
if "topics" not in st.session_state:
|
| 117 |
topics = list(set([topic["dimension"] for topic in get_question_topics() if topic["dimension"] != None]))
|
| 118 |
st.session_state["topics"] = topics
|
|
@@ -137,12 +148,28 @@ if "question_type" not in st.session_state:
|
|
| 137 |
st.session_state["question_type"] = "question"
|
| 138 |
if "tasks_for_interview" not in st.session_state:
|
| 139 |
st.session_state["tasks_for_interview"] = []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 140 |
|
| 141 |
col1, col2 = st.columns([2, 1])
|
| 142 |
|
| 143 |
col1.title("Interview Preparation")
|
| 144 |
col2.image("https://www.workgenius.com/wp-content/uploads/2023/03/WorkGenius_navy-1.svg")
|
| 145 |
|
|
|
|
|
|
|
|
|
|
| 146 |
type_col1, type_col2 = st.columns([1, 1])
|
| 147 |
|
| 148 |
with type_col1:
|
|
@@ -261,4 +288,4 @@ if len(st.session_state["questions_for_interview"]) > 0 and len(st.session_state
|
|
| 261 |
pdf_buffer.seek(0)
|
| 262 |
|
| 263 |
# Zeige den Download-Button für die PDF an
|
| 264 |
-
st.download_button(label="Download", data=pdf_buffer, file_name="
|
|
|
|
| 1 |
import requests
|
|
|
|
| 2 |
import os
|
|
|
|
| 3 |
import streamlit as st
|
| 4 |
import math
|
| 5 |
from io import BytesIO
|
| 6 |
from reportlab.lib.pagesizes import letter
|
| 7 |
+
from reportlab.platypus import SimpleDocTemplate, Paragraph
|
| 8 |
+
from reportlab.lib.styles import getSampleStyleSheet
|
| 9 |
+
from azure.cosmos import CosmosClient
|
|
|
|
|
|
|
| 10 |
from dotenv import load_dotenv
|
|
|
|
| 11 |
|
| 12 |
load_dotenv()
|
| 13 |
|
|
|
|
| 108 |
else:
|
| 109 |
st.session_state["question_type"] = "question"
|
| 110 |
|
| 111 |
+
def update_questions_and_tasks():
|
| 112 |
+
with st.spinner("Updating questions and tasks..."):
|
| 113 |
+
client: CosmosClient = st.session_state["db"]
|
| 114 |
+
database = client.get_database_client("assessment-database")
|
| 115 |
+
container = database.get_container_client("assessments")
|
| 116 |
+
assessment = st.session_state["assessment_db_object"]
|
| 117 |
+
questions_for_db = []
|
| 118 |
+
for question in st.session_state["questions_for_interview"]:
|
| 119 |
+
questions_for_db.append({"question": question["question"], "perfect_answer": question["perfect_answer"], "score": "", "evaluation": ""})
|
| 120 |
+
assessment["questions"] = questions_for_db
|
| 121 |
+
tasks_for_db = []
|
| 122 |
+
for task in st.session_state["tasks_for_interview"]:
|
| 123 |
+
tasks_for_db.append({"coding_task": task["task"], "perfect_solution": task["perfect_solution"], "score": "", "evaluation": ""})
|
| 124 |
+
assessment["coding_tasks"] = tasks_for_db
|
| 125 |
+
container.upsert_item(assessment)
|
| 126 |
+
|
| 127 |
if "topics" not in st.session_state:
|
| 128 |
topics = list(set([topic["dimension"] for topic in get_question_topics() if topic["dimension"] != None]))
|
| 129 |
st.session_state["topics"] = topics
|
|
|
|
| 148 |
st.session_state["question_type"] = "question"
|
| 149 |
if "tasks_for_interview" not in st.session_state:
|
| 150 |
st.session_state["tasks_for_interview"] = []
|
| 151 |
+
if "db" not in st.session_state:
|
| 152 |
+
client = CosmosClient(os.environ["COSMOS_DB_ENDPOINT"], os.environ["COSMOS_DB_KEY"])
|
| 153 |
+
st.session_state["db"] = client
|
| 154 |
+
if "assessment_db_object" not in st.session_state:
|
| 155 |
+
if "assessment-id" in st.query_params:
|
| 156 |
+
client: CosmosClient = st.session_state["db"]
|
| 157 |
+
database = client.get_database_client("assessment-database")
|
| 158 |
+
container = database.get_container_client("assessments")
|
| 159 |
+
assessment = container.query_items(query="SELECT * FROM c WHERE c.id = @assessment_id", parameters=[dict(name="@assessment_id", value=st.query_params["assessment-id"]) ,], enable_cross_partition_query=True, max_item_count=1)
|
| 160 |
+
st.session_state["assessment_db_object"] = list(assessment)[0]
|
| 161 |
+
else:
|
| 162 |
+
st.error("No assessment found. Please contact the side admin.", icon="🚨")
|
| 163 |
+
st.stop()
|
| 164 |
|
| 165 |
col1, col2 = st.columns([2, 1])
|
| 166 |
|
| 167 |
col1.title("Interview Preparation")
|
| 168 |
col2.image("https://www.workgenius.com/wp-content/uploads/2023/03/WorkGenius_navy-1.svg")
|
| 169 |
|
| 170 |
+
|
| 171 |
+
st.write("Assessment: "+st.session_state["assessment_db_object"]["assessment_title"])
|
| 172 |
+
|
| 173 |
type_col1, type_col2 = st.columns([1, 1])
|
| 174 |
|
| 175 |
with type_col1:
|
|
|
|
| 288 |
pdf_buffer.seek(0)
|
| 289 |
|
| 290 |
# Zeige den Download-Button für die PDF an
|
| 291 |
+
st.download_button(label="Download", data=pdf_buffer, file_name=f'interview_questions_{st.session_state["assessment_db_object"]["assessment_title"]}.pdf', mime="application/pdf", on_click=update_questions_and_tasks)
|
requirements.txt
CHANGED
|
@@ -1,3 +1,4 @@
|
|
| 1 |
streamlit
|
| 2 |
python-dotenv
|
| 3 |
-
reportlab
|
|
|
|
|
|
| 1 |
streamlit
|
| 2 |
python-dotenv
|
| 3 |
+
reportlab
|
| 4 |
+
azure-cosmos
|