61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
from pydantic import BaseModel
|
|
from typing import List, Optional
|
|
|
|
class ContactPerson(BaseModel):
|
|
id: Optional[int] = None
|
|
firstname: str
|
|
lastname: str
|
|
phone_number: str
|
|
email: str
|
|
|
|
class Address(BaseModel):
|
|
id: Optional[int] = None
|
|
street: str
|
|
city: str
|
|
zipcode: str
|
|
country: str
|
|
|
|
class Proposal(BaseModel):
|
|
id: Optional[int] = None
|
|
number: str
|
|
|
|
class Dewar(BaseModel):
|
|
id: Optional[str] = None
|
|
dewar_name: str
|
|
tracking_number: Optional[str] = None
|
|
number_of_pucks: int
|
|
number_of_samples: int
|
|
return_address: List[Address]
|
|
contact_person: List[ContactPerson]
|
|
status: str
|
|
ready_date: Optional[str] = None
|
|
shipping_date: Optional[str] = None
|
|
arrival_date: Optional[str] = None
|
|
returning_date: Optional[str] = None
|
|
qrcode: str
|
|
|
|
class Shipment(BaseModel):
|
|
shipment_id: Optional[str] = None
|
|
shipment_name: str
|
|
shipment_date: str
|
|
shipment_status: str
|
|
contact_person: List[ContactPerson]
|
|
proposal_number: List[Proposal]
|
|
return_address: List[Address]
|
|
comments: Optional[str] = None
|
|
dewars: List[Dewar]
|
|
|
|
def get_number_of_dewars(self) -> int:
|
|
return len(self.dewars)
|
|
|
|
def get_shipment_contact_persons(self) -> List[ContactPerson]:
|
|
return self.contact_person
|
|
|
|
def get_shipment_return_addresses(self) -> List[Address]:
|
|
return self.return_address
|
|
|
|
def get_proposals(self) -> List[Proposal]:
|
|
return self.proposal_number
|
|
|
|
class Config:
|
|
from_attributes = True |