File size: 1,611 Bytes
13933bf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
from pydantic import BaseModel, EmailStr, Field
from datetime import datetime
from typing import Optional
# VisitorLog Schemas
class VisitorLogBase(BaseModel):
full_name: str
email_address: EmailStr
phone_number: str
company_name: Optional[str] = None
qid_id_number: Optional[str] = None
purpose_of_visit: str
person_to_meet: str
preferred_datetime: datetime
class VisitorLogCreate(VisitorLogBase):
pass
class VisitorLogResponse(VisitorLogBase):
sl_no: int
reference_number: str
class Config:
from_attributes = True # Updated from orm_mode
# MeetingStatus Schemas
class MeetingStatusBase(BaseModel):
status: str
email_send: Optional[str] = None
class MeetingStatusCreate(MeetingStatusBase):
reference_number: str
class MeetingStatusUpdate(MeetingStatusBase):
pass
class MeetingStatusResponse(MeetingStatusBase):
sl_no: int
reference_number: str
class Config:
from_attributes = True # Updated from orm_mode
# Combined Response Schema
class VisitorWithStatusResponse(VisitorLogResponse):
meeting_status: Optional[MeetingStatusResponse] = None
class Config:
from_attributes = True # Updated from orm_mode
# PersonToMeet Schemas
class PersonToMeetBase(BaseModel):
name: str
phone_number: str
department: str
email_id: EmailStr
class PersonToMeetCreate(PersonToMeetBase):
pass
class PersonToMeetUpdate(PersonToMeetBase):
pass
class PersonToMeetResponse(PersonToMeetBase):
id: int
class Config:
from_attributes = True
|