Files
ctms/backend/app/schemas/startup.py
T
2026-01-15 11:25:13 +08:00

135 lines
3.5 KiB
Python

import uuid
from datetime import date, datetime
from typing import Optional
from pydantic import BaseModel, ConfigDict
class StartupFeasibilityCreate(BaseModel):
site_id: Optional[uuid.UUID] = None
submit_date: Optional[date] = None
accept_date: Optional[date] = None
approved_date: Optional[date] = None
project_no: Optional[str] = None
class StartupFeasibilityUpdate(BaseModel):
site_id: Optional[uuid.UUID] = None
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
site_id: Optional[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):
site_id: Optional[uuid.UUID] = None
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):
site_id: Optional[uuid.UUID] = None
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
site_id: Optional[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):
site_id: uuid.UUID
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
site_id: Optional[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)