added pucks and samples

This commit is contained in:
GotthardG
2024-11-04 11:34:14 +01:00
parent a9b8925be8
commit 23e7ebb819
17 changed files with 378 additions and 112 deletions

View File

@ -3,7 +3,7 @@ from pydantic import BaseModel, EmailStr, constr
from datetime import date
# Base class for Contact Person
# Contact Person schemas
class ContactPersonBase(BaseModel):
firstname: str
lastname: str
@ -11,12 +11,10 @@ class ContactPersonBase(BaseModel):
email: EmailStr
# Create schema for Contact Person
class ContactPersonCreate(ContactPersonBase):
pass
# Response schema for Contact Person with ID
class ContactPerson(ContactPersonBase):
id: int
@ -24,7 +22,7 @@ class ContactPerson(ContactPersonBase):
from_attributes = True
# Create schema for Address
# Address schemas
class AddressCreate(BaseModel):
street: str
city: str
@ -32,7 +30,6 @@ class AddressCreate(BaseModel):
country: str
# Response schema for Address with ID
class Address(AddressCreate):
id: int
@ -40,8 +37,44 @@ class Address(AddressCreate):
from_attributes = True
# Create schema for Dewar
class DewarCreate(BaseModel):
# Sample schemas
class Sample(BaseModel):
id: int
sample_name: str
class Config:
from_attributes = True
# Puck schemas
class PuckBase(BaseModel):
puck_name: str
puck_type: str
puck_location_in_dewar: int
class PuckCreate(PuckBase):
positions: List[int] = []
class PuckUpdate(BaseModel):
puck_name: Optional[str] = None
puck_type: Optional[str] = None
puck_location_in_dewar: Optional[int] = None
dewar_id: Optional[int] = None
positions: Optional[List[int]] = None
class Puck(PuckBase):
id: int
positions: List[Sample] = []
class Config:
from_attributes = True
# Dewar schemas
class DewarBase(BaseModel):
dewar_name: str
tracking_number: str
number_of_pucks: int
@ -56,28 +89,37 @@ class DewarCreate(BaseModel):
return_address_id: Optional[int]
# Response schema for Dewar
class Dewar(BaseModel):
class DewarCreate(DewarBase):
pass
class Dewar(DewarBase):
id: str
dewar_name: str
tracking_number: str
number_of_pucks: int
number_of_samples: int
status: str
ready_date: Optional[date]
shipping_date: Optional[date]
arrival_date: Optional[date]
returning_date: Optional[date]
qrcode: str
shipment_id: Optional[str]
contact_person: Optional[ContactPerson]
return_address: Optional[Address]
pucks: Optional[List[Puck]] = []
class Config:
from_attributes = True
# Proposal schema
class DewarUpdate(BaseModel):
dewar_name: Optional[str] = None
tracking_number: Optional[str] = None
number_of_pucks: Optional[int] = None
number_of_samples: Optional[int] = None
status: Optional[str] = None
ready_date: Optional[date] = None
shipping_date: Optional[date] = None
arrival_date: Optional[date] = None
returning_date: Optional[date] = None
qrcode: Optional[str] = None
contact_person_id: Optional[int] = None
address_id: Optional[int] = None
# Proposal schemas
class Proposal(BaseModel):
id: int
number: str
@ -86,7 +128,7 @@ class Proposal(BaseModel):
from_attributes = True
# Response schema for Shipment
# Shipment schemas
class Shipment(BaseModel):
shipment_id: str
shipment_name: str
@ -101,20 +143,6 @@ class Shipment(BaseModel):
class Config:
from_attributes = True
class DewarUpdate(BaseModel):
dewar_id: str
dewar_name: Optional[str] = None
tracking_number: Optional[str] = None
number_of_pucks: Optional[int] = None
number_of_samples: Optional[int] = None
status: Optional[str] = None
ready_date: Optional[date] = None
shipping_date: Optional[date] = None
arrival_date: Optional[date] = None
returning_date: Optional[date] = None
qrcode: Optional[str] = None
contact_person_id: Optional[int] = None
address_id: Optional[int] = None # Added
class ShipmentCreate(BaseModel):
shipment_name: str