From 983489d57f818d06d66224ddc692d7277ed43524 Mon Sep 17 00:00:00 2001 From: Gustavo Henrique Santos Souza de Miranda Date: Tue, 3 Jun 2025 21:54:13 -0300 Subject: [PATCH] Added one more model: Photo.py and edited the Entry.py to add the Many-to-Many relationship to the Photo.py Model --- .idea/workspace.xml | 32 ++++++++++++++++++-------------- src/Pilgrim/Models/Entry.py | 8 +++++++- src/Pilgrim/Models/Photo.py | 19 +++++++++++++++++++ src/Pilgrim/__init__.py | 4 +++- 4 files changed, 47 insertions(+), 16 deletions(-) create mode 100644 src/Pilgrim/Models/Photo.py diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 1f7c0cb..e459338 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,10 +5,9 @@ - - + - + + - { + "lastFilter": { + "state": "OPEN", + "assignee": "gmbrax" } -}]]> - + { + "selectedUrlAndAccountId": { + "url": "https://github.com/gmbrax/Pilgrim.git", + "accountId": "213d8456-c67d-4cfd-99a6-337d47c35b4a" } -}]]> +} { "associatedIndex": 0 } @@ -54,7 +58,7 @@ "Python.main.executor": "Run", "RunOnceActivity.ShowReadmeOnStart": "true", "RunOnceActivity.git.unshallow": "true", - "git-widget-placeholder": "proposed__changes", + "git-widget-placeholder": "master", "node.js.detected.package.eslint": "true", "node.js.detected.package.tslint": "true", "node.js.selected.package.eslint": "(autodetect)", diff --git a/src/Pilgrim/Models/Entry.py b/src/Pilgrim/Models/Entry.py index dfedd58..9f5f860 100644 --- a/src/Pilgrim/Models/Entry.py +++ b/src/Pilgrim/Models/Entry.py @@ -1,8 +1,14 @@ -from sqlalchemy import Column, Integer, String, ForeignKey +from sqlalchemy import Column, Integer, String, ForeignKey, Table from Pilgrim import Base +photo_entry_association = Table('photo_entry_association', Base.metadata, +Column('id', Integer, primary_key=True, autoincrement=True), + Column('fk_Photo_id', Integer, ForeignKey('photo.id')), + Column('fk_Entry_id', Integer, ForeignKey('Entry.id'))) + + class Entry(Base): __tablename__ = "Entry" id = Column(Integer, primary_key=True) diff --git a/src/Pilgrim/Models/Photo.py b/src/Pilgrim/Models/Photo.py new file mode 100644 index 0000000..69773b9 --- /dev/null +++ b/src/Pilgrim/Models/Photo.py @@ -0,0 +1,19 @@ +from sqlalchemy import Column, Integer, String +from sqlalchemy.orm import relationship + +from Pilgrim import Base +from Pilgrim.Models.Entry import photo_entry_association + + +class Photo(Base): + __tablename__ = "photo" + id = Column(Integer, primary_key=True) + filepath = Column(String) + name = Column(String) + addition_date = Column(String) + caption = Column(String) + entries = relationship( + "Entry", + secondary=photo_entry_association, + back_populates="photos" + ) \ No newline at end of file diff --git a/src/Pilgrim/__init__.py b/src/Pilgrim/__init__.py index c1479bf..e5627f1 100644 --- a/src/Pilgrim/__init__.py +++ b/src/Pilgrim/__init__.py @@ -2,5 +2,7 @@ from Pilgrim.Application import Application from Pilgrim.command import main from Pilgrim.Database import Database, Base from Pilgrim.Models.TravelDiary import TravelDiary +from Pilgrim.Models.Entry import Entry +from Pilgrim.Models.Photo import Photo -__all__ = ["Application", "Database", "TravelDiary", "main", "Base"] +__all__ = ["Application", "Database", "TravelDiary", "Entry", "Photo", "main", "Base"]