More image changes. Delete and replacement logic.

This commit is contained in:
Yaro Kasear 2025-07-11 14:03:16 -05:00
parent 7d96839af8
commit 48ad5847b9
9 changed files with 67 additions and 30 deletions

View file

@ -3,5 +3,5 @@ from .. import db
worklog_images = db.Table(
'worklog_images',
db.Column('worklog_id', db.Integer, db.ForeignKey('work_log.id'), primary_key=True),
db.Column('image_id', db.Integer, db.ForeignKey('images.id'), primary_key=True),
db.Column('image_id', db.Integer, db.ForeignKey('images.id', ondelete='CASCADE'), primary_key=True),
)

View file

@ -1,6 +1,6 @@
from typing import Any, List, Optional, TYPE_CHECKING
from inventory.models.image import Image
from .image import Image
if TYPE_CHECKING:
from .brands import Brand
from .items import Item
@ -34,14 +34,14 @@ class Inventory(db.Model, ImageAttachable):
location_id: Mapped[Optional[str]] = mapped_column(ForeignKey("rooms.id"))
barcode: Mapped[Optional[str]] = mapped_column(Unicode(255))
shared: Mapped[Optional[bool]] = mapped_column(Boolean, server_default=text('((0))'))
image_id: Mapped[Optional[int]] = mapped_column(ForeignKey('images.id'), nullable=True)
image_id: Mapped[Optional[int]] = mapped_column(ForeignKey('images.id', ondelete='SET NULL'), nullable=True)
location: Mapped[Optional['Room']] = relationship('Room', back_populates='inventory')
owner = relationship('User', back_populates='inventory')
brand: Mapped[Optional['Brand']] = relationship('Brand', back_populates='inventory')
item: Mapped['Item'] = relationship('Item', back_populates='inventory')
work_logs: Mapped[List['WorkLog']] = relationship('WorkLog', back_populates='work_item')
image: Mapped[Optional['Image']] = relationship('Image', back_populates='inventory')
image: Mapped[Optional['Image']] = relationship('Image', back_populates='inventory', passive_deletes=True)
def __init__(self, timestamp: datetime.datetime, condition: str, type_id: Optional[int] = None,
name: Optional[str] = None, serial: Optional[str] = None,

View file

@ -21,14 +21,14 @@ class User(db.Model, ImageAttachable):
first_name: Mapped[Optional[str]] = mapped_column(Unicode(255), nullable=True)
location_id: Mapped[Optional[int]] = mapped_column(ForeignKey("rooms.id"), nullable=True)
supervisor_id: Mapped[Optional[int]] = mapped_column(Integer, ForeignKey("users.id"))
image_id: Mapped[Optional[int]] = mapped_column(ForeignKey('images.id'), nullable=True)
image_id: Mapped[Optional[int]] = mapped_column(ForeignKey('images.id', ondelete='SET NULL'), nullable=True)
supervisor: Mapped[Optional['User']] = relationship('User', remote_side='User.id', back_populates='subordinates')
subordinates: Mapped[List['User']] = relationship('User', back_populates='supervisor')
work_logs: Mapped[List['WorkLog']] = relationship('WorkLog', back_populates='contact')
location: Mapped[Optional['Room']] = relationship('Room', back_populates='users')
inventory: Mapped[List['Inventory']] = relationship('Inventory', back_populates='owner')
image: Mapped[Optional['Image']] = relationship('Image', back_populates='user')
image: Mapped[Optional['Image']] = relationship('Image', back_populates='user', passive_deletes=True)
@property
def full_name(self) -> str:

View file

@ -35,7 +35,7 @@ class WorkLog(db.Model, ImageAttachable):
cascade='all, delete-orphan',
order_by='WorkNote.timestamp'
)
images: Mapped[List['Image']] = relationship('Image', secondary=worklog_images, back_populates='worklogs')
images: Mapped[List['Image']] = relationship('Image', secondary=worklog_images, back_populates='worklogs', passive_deletes=True)
def __init__(
self,