felicity-lims/felicity/apps/analytics/schemas.py
2023-04-10 14:23:31 +02:00

56 lines
1.4 KiB
Python

from datetime import datetime
from typing import List, Optional, Union
from apps.analysis.schemas import AnalysisBasic
from apps.analytics import conf
from apps.user.schemas import UserBasic
from core.uid_gen import FelicityIDType
from pydantic import BaseModel
class ReportMetaBase(BaseModel):
period_start: datetime
period_end: datetime
date_column: str
sample_states: Optional[str]
report_type: str = conf.report_types.LINE_LISTING
status: Optional[str] = conf.report_states.PENDING
analyses: Optional[List[AnalysisBasic]] = None
created_at: Optional[datetime] = None
created_by_uid: Optional[FelicityIDType] = None
created_by: Optional[UserBasic] = None # noqa
updated_at: Optional[datetime] = None
updated_by_uid: Optional[FelicityIDType] = None
updated_by: Optional[UserBasic] = None # noqa
class ReportMeta(ReportMetaBase):
uid: Optional[FelicityIDType] = None
location: Union[str, None]
class Config:
orm_mode = True
class ReportMetaCreate(ReportMetaBase):
temp: str
created_by_uid: FelicityIDType
updated_by_uid: FelicityIDType
class ReportMetaUpdate(ReportMetaBase):
pass
class ReportMetaDeleted(BaseModel):
uid: FelicityIDType
message: str
class ReportRequest(BaseModel):
report_type: str
analyses_uids: List[FelicityIDType]
sample_states: List[str]
date_column: str
period_start: datetime
period_end: datetime