mirror of https://github.com/gmbrax/Pilgrim.git
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
from typing import Any
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
from sqlalchemy import Column, Integer, String, ForeignKey, DateTime
|
|
from sqlalchemy.orm import relationship
|
|
|
|
from pilgrim.models.photo_in_entry import photo_entry_association
|
|
from ..database import Base
|
|
|
|
|
|
class Photo(Base):
|
|
__tablename__ = "photos"
|
|
id = Column(Integer, primary_key=True)
|
|
filepath = Column(String)
|
|
name = Column(String)
|
|
addition_date = Column(DateTime, default=datetime.now)
|
|
caption = Column(String)
|
|
entries = relationship(
|
|
"Entry",
|
|
secondary=photo_entry_association,
|
|
back_populates="photos"
|
|
)
|
|
|
|
fk_travel_diary_id = Column(Integer, ForeignKey("travel_diaries.id"),nullable=False)
|
|
|
|
def __init__(self, filepath, name, addition_date=None, caption=None, entries=None, fk_travel_diary_id=None, **kw: Any):
|
|
super().__init__(**kw)
|
|
# Convert Path to string if needed
|
|
if isinstance(filepath, Path):
|
|
self.filepath = str(filepath)
|
|
else:
|
|
self.filepath = filepath
|
|
self.name = name
|
|
self.addition_date = addition_date if addition_date is not None else datetime.now()
|
|
self.caption = caption
|
|
self.entries = entries if entries is not None else []
|
|
if fk_travel_diary_id is not None:
|
|
self.fk_travel_diary_id = fk_travel_diary_id
|