Inventory model. Ugh.
This commit is contained in:
parent
388472742e
commit
a76d19706c
1 changed files with 40 additions and 4 deletions
|
|
@ -1,18 +1,54 @@
|
|||
from typing import Optional
|
||||
|
||||
from sqlalchemy import DateTime, ForeignKey, Index, Integer, Unicode
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
from sqlalchemy import Boolean, DateTime, ForeignKey, Index, Integer, Unicode
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from crudkit.core.base import Base, CRUDMixin
|
||||
|
||||
class Inventory(Base, CRUDMixin):
|
||||
__tablename__ = "inventory"
|
||||
|
||||
barcode: Mapped[Optional[str]] = mapped_column(Unicode(255))
|
||||
name: Mapped[Optional[str]] = mapped_column(Unicode(255))
|
||||
serial: Mapped[Optional[str]] = mapped_column(Unicode(255))
|
||||
|
||||
timestamp: Mapped[DateTime] = mapped_column(DateTime)
|
||||
condition: Mapped[str] = mapped_column(Unicode(255))
|
||||
model: Mapped[Optional[str]] = mapped_column(Unicode(255))
|
||||
notes: Mapped[Optional[str]] = mapped_column(Unicode(255))
|
||||
shared = Mapped[bool] = mapped_column(Boolean, nullable=False, default=False)
|
||||
timestamp: Mapped[DateTime] = mapped_column(DateTime)
|
||||
|
||||
brand: Mapped[Optional['Brand']] = relationship('Brand', back_populates='inventory')
|
||||
brand_id: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey('users.id'), nullable=True, index=True)
|
||||
|
||||
device_type: Mapped[Optional['DeviceType']] = relationship('DeviceType', back_populates='inventory')
|
||||
device_type_id: Mapped[Optional[int]] = mapped_column('type_id', Integer, ForeignKey("item.id"), nullable=True, index=True)
|
||||
device_type: Mapped[Optional['DeviceType']]
|
||||
|
||||
image: Mapped[Optional['Image']] = relationship('Image', back_populates='inventory', passive_deletes=True)
|
||||
image_id: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey('images.id', ondelete='SET NULL'), nullable=True, index=True)
|
||||
|
||||
location = Mapped[Optional['Room']] = relationship('Room', back_populates='inventory')
|
||||
location_id = Mapped[Optional[int]] = mapped_column(Integer, ForeignKey('rooms.id'), nullable=True, index=True)
|
||||
|
||||
owner: Mapped[Optional['User']] = relationship('User', back_populates='inventory')
|
||||
owner_id: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey("users.id"), nullable=True, index=True)
|
||||
|
||||
def __repr__(self):
|
||||
parts = [f"id={self.id}"]
|
||||
|
||||
if self.name:
|
||||
parts.append(f"name={repr(self.name)}")
|
||||
|
||||
if self.device_type:
|
||||
parts.append(f"item={repr(self.device_type.description)}")
|
||||
|
||||
if self.notes:
|
||||
parts.append(f"notes={repr(self.notes)}")
|
||||
|
||||
if self.owner:
|
||||
parts.append(f"owner={repr(self.owner.identifier)}")
|
||||
|
||||
if self.location:
|
||||
parts.append(f"location={repr(self.location.identifier)}")
|
||||
|
||||
return f"<Inventory({', '.join(parts)})>"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue