Spaces:
Sleeping
Sleeping
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) |