Rename "photo" to "image."
This commit is contained in:
parent
84db8592cb
commit
7d96839af8
11 changed files with 78 additions and 72 deletions
|
@ -11,8 +11,8 @@ from .users import User
|
|||
from .work_log import WorkLog
|
||||
from .rooms import Room
|
||||
from .work_note import WorkNote
|
||||
from .photo import Photo
|
||||
from .photo_links import worklog_photos
|
||||
from .image import Image
|
||||
from .image_links import worklog_images
|
||||
|
||||
__all__ = [
|
||||
"db",
|
||||
|
@ -25,6 +25,6 @@ __all__ = [
|
|||
"WorkLog",
|
||||
"Room",
|
||||
"WorkNote",
|
||||
"Photo",
|
||||
"worklog_photos"
|
||||
"Image",
|
||||
"worklog_images"
|
||||
]
|
||||
|
|
|
@ -10,27 +10,27 @@ from sqlalchemy import Integer, Unicode, DateTime, func
|
|||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from . import db
|
||||
from .photo_links import worklog_photos
|
||||
from .image_links import worklog_images
|
||||
|
||||
class Photo(db.Model):
|
||||
__tablename__ = 'photos'
|
||||
class Image(db.Model):
|
||||
__tablename__ = 'images'
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True)
|
||||
filename: Mapped[str] = mapped_column(Unicode(512))
|
||||
caption: Mapped[str] = mapped_column(Unicode(255), default="")
|
||||
timestamp: Mapped[datetime.datetime] = mapped_column(DateTime, default=datetime.datetime.now(), server_default=func.now())
|
||||
|
||||
inventory: Mapped[Optional['Inventory']] = relationship('Inventory', back_populates='photo')
|
||||
user: Mapped[Optional['User']] = relationship('User', back_populates='photo')
|
||||
worklogs: Mapped[List['WorkLog']] = relationship('WorkLog', secondary=worklog_photos, back_populates='photos')
|
||||
inventory: Mapped[Optional['Inventory']] = relationship('Inventory', back_populates='image')
|
||||
user: Mapped[Optional['User']] = relationship('User', back_populates='image')
|
||||
worklogs: Mapped[List['WorkLog']] = relationship('WorkLog', secondary=worklog_images, back_populates='images')
|
||||
|
||||
def __init__(self, filename: str, caption: Optional[str] = None):
|
||||
self.filename = filename
|
||||
self.caption = caption or ""
|
||||
|
||||
def __repr__(self):
|
||||
return f"<Photo(id={self.id}, filename={self.filename})>"
|
||||
return f"<Image(id={self.id}, filename={self.filename})>"
|
||||
|
||||
class PhotoAttachable:
|
||||
def attach_photo(self, photo: 'Photo') -> None:
|
||||
raise NotImplementedError("This model doesn't know how to attach photos.")
|
||||
class ImageAttachable:
|
||||
def attach_image(self, image: 'Image') -> None:
|
||||
raise NotImplementedError("This model doesn't know how to attach images.")
|
|
@ -1,7 +1,7 @@
|
|||
from .. import db
|
||||
|
||||
worklog_photos = db.Table(
|
||||
'worklog_photos',
|
||||
worklog_images = db.Table(
|
||||
'worklog_images',
|
||||
db.Column('worklog_id', db.Integer, db.ForeignKey('work_log.id'), primary_key=True),
|
||||
db.Column('photo_id', db.Integer, db.ForeignKey('photos.id'), primary_key=True),
|
||||
db.Column('image_id', db.Integer, db.ForeignKey('images.id'), primary_key=True),
|
||||
)
|
|
@ -1,21 +1,21 @@
|
|||
from typing import Any, List, Optional, TYPE_CHECKING
|
||||
|
||||
from inventory.models.photo import Photo
|
||||
from inventory.models.image import Image
|
||||
if TYPE_CHECKING:
|
||||
from .brands import Brand
|
||||
from .items import Item
|
||||
from .work_log import WorkLog
|
||||
from .rooms import Room
|
||||
from .photo import Photo
|
||||
from .image import Image
|
||||
|
||||
from sqlalchemy import Boolean, ForeignKey, Identity, Index, Integer, Unicode, DateTime, text
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
import datetime
|
||||
|
||||
from . import db
|
||||
from .photo import PhotoAttachable
|
||||
from .image import ImageAttachable
|
||||
|
||||
class Inventory(db.Model, PhotoAttachable):
|
||||
class Inventory(db.Model, ImageAttachable):
|
||||
__tablename__ = 'inventory'
|
||||
__table_args__ = (
|
||||
Index('Inventory$Barcode', 'barcode'),
|
||||
|
@ -34,14 +34,14 @@ class Inventory(db.Model, PhotoAttachable):
|
|||
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))'))
|
||||
photo_id: Mapped[Optional[int]] = mapped_column(ForeignKey('photos.id'), nullable=True)
|
||||
image_id: Mapped[Optional[int]] = mapped_column(ForeignKey('images.id'), 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')
|
||||
photo: Mapped[Optional['Photo']] = relationship('Photo', back_populates='inventory')
|
||||
image: Mapped[Optional['Image']] = relationship('Image', back_populates='inventory')
|
||||
|
||||
def __init__(self, timestamp: datetime.datetime, condition: str, type_id: Optional[int] = None,
|
||||
name: Optional[str] = None, serial: Optional[str] = None,
|
||||
|
@ -128,5 +128,5 @@ class Inventory(db.Model, PhotoAttachable):
|
|||
shared=bool(data.get("shared", False))
|
||||
)
|
||||
|
||||
def attach_photo(self, photo: Photo) -> None:
|
||||
self.photo = photo
|
||||
def attach_image(self, image: Image) -> None:
|
||||
self.image = image
|
||||
|
|
|
@ -3,15 +3,15 @@ if TYPE_CHECKING:
|
|||
from .inventory import Inventory
|
||||
from .rooms import Room
|
||||
from .work_log import WorkLog
|
||||
from .photo import Photo
|
||||
from .image import Image
|
||||
|
||||
from sqlalchemy import Boolean, ForeignKey, Identity, Integer, Unicode, text
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from . import db
|
||||
from .photo import PhotoAttachable
|
||||
from .image import ImageAttachable
|
||||
|
||||
class User(db.Model, PhotoAttachable):
|
||||
class User(db.Model, ImageAttachable):
|
||||
__tablename__ = 'users'
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, Identity(start=1, increment=1), primary_key=True)
|
||||
|
@ -21,14 +21,14 @@ class User(db.Model, PhotoAttachable):
|
|||
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"))
|
||||
photo_id: Mapped[Optional[int]] = mapped_column(ForeignKey('photos.id'), nullable=True)
|
||||
image_id: Mapped[Optional[int]] = mapped_column(ForeignKey('images.id'), 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')
|
||||
photo: Mapped[Optional['Photo']] = relationship('Photo', back_populates='user')
|
||||
image: Mapped[Optional['Image']] = relationship('Image', back_populates='user')
|
||||
|
||||
@property
|
||||
def full_name(self) -> str:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from typing import Optional, Any, List, TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from .inventory import Inventory
|
||||
from .photo import Photo
|
||||
from .image import Image
|
||||
from .users import User
|
||||
from .work_note import WorkNote
|
||||
|
||||
|
@ -10,11 +10,11 @@ from sqlalchemy.orm import Mapped, mapped_column, relationship
|
|||
import datetime
|
||||
|
||||
from . import db
|
||||
from .photo import PhotoAttachable
|
||||
from .photo_links import worklog_photos
|
||||
from .image import ImageAttachable
|
||||
from .image_links import worklog_images
|
||||
from .work_note import WorkNote
|
||||
|
||||
class WorkLog(db.Model, PhotoAttachable):
|
||||
class WorkLog(db.Model, ImageAttachable):
|
||||
__tablename__ = 'work_log'
|
||||
|
||||
id: Mapped[int] = mapped_column(Integer, Identity(start=1, increment=1), primary_key=True)
|
||||
|
@ -35,7 +35,7 @@ class WorkLog(db.Model, PhotoAttachable):
|
|||
cascade='all, delete-orphan',
|
||||
order_by='WorkNote.timestamp'
|
||||
)
|
||||
photos: Mapped[List['Photo']] = relationship('Photo', secondary=worklog_photos, back_populates='worklogs')
|
||||
images: Mapped[List['Image']] = relationship('Image', secondary=worklog_images, back_populates='worklogs')
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue