import uuid from datetime import date, datetime from typing import Optional from pydantic import BaseModel, ConfigDict class StartupFeasibilityCreate(BaseModel): submit_date: Optional[date] = None accept_date: Optional[date] = None approved_date: Optional[date] = None project_no: Optional[str] = None class StartupFeasibilityUpdate(BaseModel): submit_date: Optional[date] = None accept_date: Optional[date] = None approved_date: Optional[date] = None project_no: Optional[str] = None class StartupFeasibilityRead(BaseModel): id: uuid.UUID study_id: uuid.UUID submit_date: Optional[date] accept_date: Optional[date] approved_date: Optional[date] project_no: Optional[str] created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class StartupEthicsCreate(BaseModel): submit_date: Optional[date] = None accept_date: Optional[date] = None meeting_date: Optional[date] = None approved_date: Optional[date] = None approval_no: Optional[str] = None class StartupEthicsUpdate(BaseModel): submit_date: Optional[date] = None accept_date: Optional[date] = None meeting_date: Optional[date] = None approved_date: Optional[date] = None approval_no: Optional[str] = None class StartupEthicsRead(BaseModel): id: uuid.UUID study_id: uuid.UUID submit_date: Optional[date] accept_date: Optional[date] meeting_date: Optional[date] approved_date: Optional[date] approval_no: Optional[str] created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class KickoffMeetingCreate(BaseModel): kickoff_date: Optional[date] = None attendees: Optional[list[str]] = None class KickoffMeetingUpdate(BaseModel): kickoff_date: Optional[date] = None attendees: Optional[list[str]] = None class KickoffMeetingRead(BaseModel): id: uuid.UUID study_id: uuid.UUID kickoff_date: Optional[date] attendees: Optional[list[str]] created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True) class TrainingAuthorizationCreate(BaseModel): name: str role: Optional[str] = None site_name: Optional[str] = None trained: bool = False authorized: bool = False trained_date: Optional[date] = None authorized_date: Optional[date] = None remark: Optional[str] = None class TrainingAuthorizationUpdate(BaseModel): name: Optional[str] = None role: Optional[str] = None site_name: Optional[str] = None trained: Optional[bool] = None authorized: Optional[bool] = None trained_date: Optional[date] = None authorized_date: Optional[date] = None remark: Optional[str] = None class TrainingAuthorizationRead(BaseModel): id: uuid.UUID study_id: uuid.UUID name: str role: Optional[str] site_name: Optional[str] trained: bool authorized: bool trained_date: Optional[date] authorized_date: Optional[date] remark: Optional[str] created_by: Optional[uuid.UUID] created_at: datetime updated_at: datetime model_config = ConfigDict(from_attributes=True)