added dewar type, serial number, generate unique id, qr code and generate label
This commit is contained in:
@ -1,7 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, Date, ForeignKey, JSON
|
||||
from sqlalchemy.orm import relationship
|
||||
from app.database import Base
|
||||
from app.calculations import calculate_number_of_pucks, calculate_number_of_samples
|
||||
import uuid
|
||||
|
||||
|
||||
class Shipment(Base):
|
||||
@ -45,19 +45,35 @@ class Address(Base):
|
||||
|
||||
shipments = relationship("Shipment", back_populates="return_address")
|
||||
|
||||
class DewarType(Base):
|
||||
__tablename__ = "dewar_types"
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
dewar_type = Column(String, unique=True, index=True)
|
||||
serial_numbers = relationship("DewarSerialNumber", back_populates="dewar_type")
|
||||
|
||||
class DewarSerialNumber(Base):
|
||||
__tablename__ = "dewar_serial_numbers"
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
serial_number = Column(String, index=True)
|
||||
dewar_type_id = Column(Integer, ForeignKey('dewar_types.id'))
|
||||
dewar_type = relationship("DewarType", back_populates="serial_numbers")
|
||||
|
||||
|
||||
class Dewar(Base):
|
||||
__tablename__ = "dewars"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True, autoincrement=True)
|
||||
dewar_name = Column(String)
|
||||
dewar_type_id = Column(Integer, ForeignKey("dewar_types.id"), nullable=True)
|
||||
dewar_serial_number_id = Column(Integer, ForeignKey("dewar_serial_numbers.id"), nullable=True)
|
||||
tracking_number = Column(String)
|
||||
status = Column(String)
|
||||
ready_date = Column(Date, nullable=True)
|
||||
shipping_date = Column(Date, nullable=True)
|
||||
arrival_date = Column(Date, nullable=True)
|
||||
returning_date = Column(Date, nullable=True)
|
||||
qrcode = Column(String)
|
||||
unique_id = Column(String(36), default=lambda: str(uuid.uuid4()), unique=True, index=True, nullable=True)
|
||||
qrcode = Column(String, nullable=True)
|
||||
shipment_id = Column(Integer, ForeignKey("shipments.id"))
|
||||
return_address_id = Column(Integer, ForeignKey("addresses.id"))
|
||||
contact_person_id = Column(Integer, ForeignKey("contact_persons.id"))
|
||||
@ -67,6 +83,9 @@ class Dewar(Base):
|
||||
contact_person = relationship("ContactPerson")
|
||||
pucks = relationship("Puck", back_populates="dewar")
|
||||
|
||||
dewar_type = relationship("DewarType")
|
||||
dewar_serial_number = relationship("DewarSerialNumber")
|
||||
|
||||
@property
|
||||
def number_of_pucks(self) -> int:
|
||||
return len(self.pucks) if self.pucks else 0
|
||||
@ -77,7 +96,6 @@ class Dewar(Base):
|
||||
return 0
|
||||
return sum(len(puck.samples) for puck in self.pucks)
|
||||
|
||||
|
||||
class Proposal(Base):
|
||||
__tablename__ = "proposals"
|
||||
|
||||
|
Reference in New Issue
Block a user