Add support for data collection parameters across layers

Introduced serialization for `data_collection_parameters` in backend models and processing. Added logic to parse and attach data collection parameters in the frontend. This ensures consistent handling and storage of these parameters throughout the application.
This commit is contained in:
GotthardG
2025-01-08 09:19:23 +01:00
parent 35369fd13c
commit 9b4f8599f3
3 changed files with 60 additions and 4 deletions

View File

@ -91,6 +91,12 @@ class DataCollectionParameters(BaseModel):
chiphiangles: Optional[float] = None # Optional float field between 0 and 30
dose: Optional[float] = None # Optional float field
def to_dict(self):
"""Convert the model instance to a dictionary."""
return self.dict(
exclude_unset=True
) # Use this built-in method for serialization
class Config:
from_attributes = True
@ -416,6 +422,7 @@ class Sample(BaseModel):
positioninpuck: Optional[int] = Field(None)
priority: Optional[int] = None
comments: Optional[str] = None
data_collection_parameters: Optional[DataCollectionParameters]
events: List[SampleEventCreate] = []
@ -423,7 +430,7 @@ class SampleCreate(BaseModel):
sample_name: str = Field(..., alias="crystalname")
proteinname: Optional[str] = None
position: int = Field(..., alias="positioninpuck")
data_collection_parameters: Optional[DataCollectionParameters] = None
data_collection_parameters: Optional[DataCollectionParameters] = Field(default=None)
priority: Optional[int] = None
comments: Optional[str] = None
results: Optional[Results] = None