mbosse99 commited on
Commit
af8ae64
·
1 Parent(s): b832050

added db integration

Browse files
Files changed (2) hide show
  1. app.py +36 -9
  2. 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, Spacer, PageTemplate, Frame, Image
10
- from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
11
- from reportlab.lib.units import inch
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="interview_questions.pdf", mime="application/pdf")
 
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