felicity-lims/felicity/apps/worksheet/schemas.py

106 lines
2.4 KiB
Python
Raw Normal View History

2023-09-11 13:06:17 +08:00
from typing import List, Optional
from pydantic import BaseModel
from pydantic import ConfigDict
from felicity.apps.analysis.schemas import AnalysisBaseInDB, QCLevelInDB
#
# WorkSheet Schemas
#
# Shared properties
class WorkSheetBase(BaseModel):
2023-09-11 13:02:05 +08:00
analyst_uid: str | None = None
template_uid: str | None = None
worksheet_id: str | None = None
2023-09-11 13:02:05 +08:00
instrument_uid: str | None = None
sample_type_uid: str | None = None
analysis_uid: str | None = None
analysis: Optional[AnalysisBaseInDB] = None
2023-09-14 16:35:24 +08:00
reserved: Optional[dict] = None
number_of_samples: int | None = None
worksheet_type: int | None = 0
rows: int | None = None
cols: int | None = None
2023-09-11 13:02:05 +08:00
row_wise: bool | None = True
template: Optional[dict] = {}
state: str | None = None
class WorkSheetBaseInDB(WorkSheetBase):
2023-09-11 13:02:05 +08:00
uid: str | None = None
2023-09-14 16:35:24 +08:00
model_config = ConfigDict(from_attributes=True)
# Properties to receive via API on creation
class WorkSheetCreate(WorkSheetBase):
pass
# Properties to receive via API on update
class WorkSheetUpdate(WorkSheetBase):
pass
# Properties to return via API
class WorkSheet(WorkSheetBaseInDB):
pass
# Properties stored in DB
class WorkSheetInDB(WorkSheetBaseInDB):
pass
#
# WSTemplate Schemas
#
# Shared properties
class WSTemplateBase(BaseModel):
name: str | None = None
description: str | None = None
2023-09-11 13:02:05 +08:00
instrument_uid: str | None = None
sample_type_uid: str | None = None
analysis_uid: str | None = None
analysis: Optional[AnalysisBaseInDB] = None
qc_analyses: Optional[List[AnalysisBaseInDB]] = []
qc_levels: Optional[List[QCLevelInDB]] = []
2023-09-14 16:35:24 +08:00
reserved: Optional[dict] = None
number_of_samples: int | None = None
worksheet_type: str | None = "flat"
rows: int | None = None
cols: int | None = None
2023-09-11 13:02:05 +08:00
row_wise: bool | None = True
class WSTemplateBaseInDB(WSTemplateBase):
2023-09-11 13:02:05 +08:00
uid: str | None = None
2023-09-14 16:35:24 +08:00
model_config = ConfigDict(from_attributes=True)
# Properties to receive via API on creation
class WSTemplateCreate(WSTemplateBase):
pass
# Properties to receive via API on update
class WSTemplateUpdate(WSTemplateBase):
pass
# Properties to return via API
class WSTemplate(WSTemplateBaseInDB):
pass
# Properties stored in DB
class WSTemplateInDB(WSTemplateBaseInDB):
pass