Enhance Dewar handling and display in logistics system

Added new fields and enriched data representations in DewarStatusTab, backend schemas, and APIs to improve dewar tracking and management. Introduced new API endpoint `/dewar/table` for simplified data rendering. Applied logging and validations for missing relationships.
This commit is contained in:
GotthardG
2025-02-05 21:43:17 +01:00
parent 25673ae05c
commit 43d67b1044
3 changed files with 243 additions and 38 deletions

View File

@ -1,4 +1,4 @@
from typing import List, Optional
from typing import List, Optional, Union
from datetime import datetime
from pydantic import BaseModel, EmailStr, constr, Field, field_validator
from datetime import date
@ -410,6 +410,13 @@ class ContactUpdate(BaseModel):
email: Optional[EmailStr] = None
class ContactMinimal(BaseModel):
firstname: str
lastname: str
email: EmailStr
id: int
class AddressCreate(BaseModel):
pgroups: str
house_number: Optional[str] = None
@ -438,6 +445,16 @@ class AddressUpdate(BaseModel):
country: Optional[str] = None
class AddressMinimal(BaseModel):
house_number: str
street: str
city: str
state: Optional[str] = None
zipcode: str
country: str
id: int
class Sample(BaseModel):
id: int
sample_name: str
@ -578,6 +595,28 @@ class DewarSchema(BaseModel):
# Tracking will also become an event
class DewarTable(BaseModel):
id: int
pgroups: Optional[str] = None # Make "pgroups" optional
shipment_id: Optional[int] = None # Make "shipment_id" optional
shipment_name: str
dewar_name: str
tracking_number: Optional[str] = None
dewar_type_id: Optional[int] = None
dewar_serial_number_id: Optional[int] = None
unique_id: Optional[str] = None
status: Optional[str] = None
contact: Optional[List[ContactMinimal]] = None
address: Optional[List[AddressMinimal]] = None
event_id: Optional[int] = None
slot_id: Optional[int] = None
events: Optional[Union[str, int]] = None
last_updated: Optional[datetime] = None
class Config:
from_attributes = True
class Proposal(BaseModel):
id: int
number: str