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
|