mbosse99's picture
init commit
abd17e2 verified
raw
history blame
5.25 kB
import requests
import json
import os
import streamlit as st
from datetime import datetime, timedelta
from ParamClasses import CreateParams
from dotenv import load_dotenv
load_dotenv()
def create_meeting(input_params: CreateParams) -> dict:
try:
url = f"{os.environ.get('BASE_API')}/api/create-appointment"
response = requests.post(url=url,data=input_params)
response.raise_for_status()
return response.json()
except Exception as e:
print(f"Fehler beim erstellen des Termins: {str(e)}")
st.error("Something went wrong, please contact the site admin.", icon="🚨")
def get_summary(input_params) -> dict:
try:
url = f"{os.environ.get('BASE_API')}/api/create-interview-summary"
response = requests.post(url=url,data=input_params)
response.raise_for_status()
return response.json()
except Exception as e:
print(f"Fehler beim erstellen des Termins: {str(e)}")
st.error(f"Something went wrong: {str(e)}", icon="🚨")
if "appointment_response" not in st.session_state:
st.session_state["appointment_response"] = None
if "subject_input" not in st.session_state:
st.session_state["subject_input"] = None
col1, col2 = st.columns([2, 1])
col1.title("Appointment Tool")
col2.image("https://www.workgenius.com/wp-content/uploads/2023/03/WorkGenius_navy-1.svg")
st.write("Please enter the date, time and duration for the appointment to be created.")
selected_date = st.date_input("Date of the appointment",format="DD/MM/YYYY")
now = datetime.now()
rounded_now = now + timedelta(minutes=30 - now.minute % 30)
selected_time = st.time_input("Starting time of the appointment", value=rounded_now)
selected_duration = st.select_slider("Duration of the appointment in minutes",[15,30,45,60],value=30)
subject_input = st.text_input("Enter the subject of the meeting")
recruiter_mail = st.text_input("Please enter the mail of the recruiter", key="recruiter_mail")
client_mail = st.text_input("Please enter the mail of the client", key="client_mail")
candidate_mail = st.text_input("Please enter the mail of the candidate", key="candidate_mail")
if not st.session_state["appointment_response"]:
if st.button("Create appointment") or st.session_state["appointment_response"]:
print("nach button appointment")
if subject_input:
start_date_str = datetime.strptime(str(selected_date)+" "+str(selected_time),"%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%dT%H:%M:%S.%fZ")
end_date = datetime.strptime(str(selected_date)+" "+str(selected_time),"%Y-%m-%d %H:%M:%S") + timedelta(minutes=selected_duration)
end_date_str = end_date.strftime("%Y-%m-%dT%H:%M:%S.%fZ")
with st.spinner("Creating the appointment..."):
request_params = json.dumps({
"appointment": {
"start_time": start_date_str,
"end_time": end_date_str
},
"subject": subject_input,
"recruiter": {
"email": st.session_state["recruiter_mail"],
"name": st.session_state["recruiter_mail"]
},
"client": {
"email": st.session_state["client_mail"],
"name": st.session_state["client_mail"]
},
"candidate": {
"email": st.session_state["candidate_mail"],
"name": st.session_state["candidate_mail"]
}
})
appointment_response = create_meeting(request_params)
# st.write(appointment_response)
if appointment_response:
st.success("The appointment was created correctly.")
st.write(appointment_response["calendar_event"]["onlineMeeting"]["joinUrl"])
st.info("Once you have attended the meeting and it has ended, please wait about 5 minutes before requesting the meeting recording as it will take time to become available ", icon="ℹ️")
st.session_state["appointment_response"] = appointment_response
st.session_state["subject_input"] = subject_input
if st.button("Create Interview Summary"):
print("please")
st.rerun()
# print("nach btn summary")
# with st.spinner("Creating the summary..."):
# summary_response = get_summary({"interview_subject": subject_input})
# if summary_response:
# st.write(summary_response)
else:
st.warning("Please enter the subject of the meeting")
else:
with st.spinner("Creating the summary..."):
print(st.session_state["subject_input"])
print(isinstance(st.session_state["subject_input"],str))
print("bis hierhin gekommen")
summary_response = get_summary(json.dumps({"join_url": st.session_state["appointment_response"]["calendar_event"]["onlineMeeting"]["joinUrl"]}))
st.write(summary_response)