wg-interview-tool / ParamClasses.py
mbosse99's picture
added db connection
32ddb83
from pydantic import BaseModel, validator
from datetime import datetime, timezone
# ------------------------------------------------------------------------------
class Attendee(BaseModel, extra="forbid"):
email: str
name: str
# ------------------------------------------------------------------------------
class Appointment(BaseModel, extra="forbid"):
start_time: datetime
end_time: datetime
# To compare two Appointment objects
def __hash__(self):
return hash((self.start_time, self.end_time))
# ------------------------------------------------------------------------------
class CreateParams(BaseModel, extra="forbid"):
appointment: Appointment
subject: str
recruiter: Attendee
client: Attendee
candidate: Attendee
# ------------------------------------------------------------------------------
class SendClientParams(BaseModel, extra="forbid"):
client_email: str
candidate_name: str
job_title: str
# ------------------------------------------------------------------------------
class AppointmentDBItem(BaseModel, extra="forbid"):
id: str
zoom_meeting_id: str
process_id: str
job_title: str
start_time: str
end_time: str
meeting_url: str
environment: str
process_status: str
recruiter: Attendee
client: Attendee
candidate: Attendee
summary_recruiter: str
summary_client: str
summary_candidate: str
# ------------------------------------------------------------------------------
class SendCandidateParams(BaseModel, extra="forbid"):
appointment_suggestions: list[Appointment]
candidate_email: str
job_title: str
@validator("appointment_suggestions")
def check_length(cls, appointment_list):
if len(appointment_list) < 3:
raise ValueError(
"appointment_suggestions must contain at least 3 items"
)
if len(appointment_list) != len(set(appointment_list)):
raise ValueError("All suggestions must be unique.")
current_datetime = datetime.now(timezone.utc)
if not all(
appointment.start_time > current_datetime
and appointment.end_time > current_datetime
for appointment in appointment_list
):
raise ValueError(
"All suggestions must refer to appointments in the future."
)
return list