Files
ctms/backend/app/schemas/material_equipment.py

82 lines
2.4 KiB
Python

import uuid
from datetime import datetime
from pydantic import BaseModel, ConfigDict, field_validator
class MaterialEquipmentCreate(BaseModel):
name: str
spec_model: str
unit: str | None = None
brand: str
origin: str | None = None
production_permit_file_name: str | None = None
tech_index_file_name: str | None = None
need_calibration: bool
calibration_cycle_days: int | None = None
@field_validator("name", "spec_model", "brand", mode="before")
@classmethod
def _strip_required(cls, value: str) -> str:
text = (value or "").strip()
if not text:
raise ValueError("不能为空")
return text
@field_validator("unit", "origin", "production_permit_file_name", "tech_index_file_name", mode="before")
@classmethod
def _strip_optional(cls, value: str | None) -> str | None:
if value is None:
return None
text = value.strip()
return text or None
class MaterialEquipmentUpdate(BaseModel):
name: str | None = None
spec_model: str | None = None
unit: str | None = None
brand: str | None = None
origin: str | None = None
production_permit_file_name: str | None = None
tech_index_file_name: str | None = None
need_calibration: bool | None = None
calibration_cycle_days: int | None = None
@field_validator("name", "spec_model", "brand", mode="before")
@classmethod
def _strip_required(cls, value: str | None) -> str | None:
if value is None:
return None
text = value.strip()
if not text:
raise ValueError("不能为空")
return text
@field_validator("unit", "origin", "production_permit_file_name", "tech_index_file_name", mode="before")
@classmethod
def _strip_optional(cls, value: str | None) -> str | None:
if value is None:
return None
text = value.strip()
return text or None
class MaterialEquipmentRead(BaseModel):
id: uuid.UUID
study_id: uuid.UUID
name: str
spec_model: str
unit: str | None
brand: str
origin: str | None
production_permit_file_name: str | None
tech_index_file_name: str | None
need_calibration: bool
calibration_cycle_days: int | None
created_by: uuid.UUID | None
created_at: datetime
updated_at: datetime
model_config = ConfigDict(from_attributes=True)