diff --git a/.github/dependabot.yml b/.github/dependabot.yml
deleted file mode 100644
index 9d866e3..0000000
--- a/.github/dependabot.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# To get started with Dependabot version updates, you'll need to specify which
-# package ecosystems to update and where the package manifests are located.
-# Please see the documentation for all configuration options:
-# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
-
-version: 2
-updates:
- - package-ecosystem: "pip" # See documentation for possible values
- directory: "/" # Location of package manifests
- schedule:
- interval: "weekly"
diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml
deleted file mode 100644
index e1e14af..0000000
--- a/.github/workflows/pylint.yml
+++ /dev/null
@@ -1,24 +0,0 @@
-name: Pylint
-
-on: [push]
-
-jobs:
- build:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- python-version: ["3.10"]
- steps:
- - uses: actions/checkout@v4
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@v3
- with:
- python-version: ${{ matrix.python-version }}
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- pip install pylint
- - name: Analysing the code with pylint
- run: |
- pylint --disable=C0114,C0115,C0116 --exit-zero $(git ls-files '*.py')
diff --git a/.gitignore b/.gitignore
index e36b675..08fdd16 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,144 +1,2 @@
-# Database files
database.db
-
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-share/python-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-MANIFEST
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.nox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-*.py,cover
-.hypothesis/
-.pytest_cache/
-cover/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-db.sqlite3
-db.sqlite3-journal
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-build/
-temp/
-
-# PyBuilder
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# IPython
-profile_default/
-ipython_config.py
-
-# pyenv
-.python-version
-
-# pipenv
-Pipfile.lock
-
-# poetry
-poetry.lock
-
-# PEP 582; used by e.g. github.com/David-OConnor/pyflow
-__pypackages__/
-
-# Celery stuff
-celerybeat-schedule
-celerybeat.pid
-
-# SageMath parsed files
-*.sage.py
-
-# Environments
-.env
-.env.*
-.venv
-venv/
-ENV/
-env/
-env.bak/
-venv.bak/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-.dmypy.json
-dmypy.json
-
-# Pyre type checker
-.pyre/
-
-# pytype static type analyzer
-.pytype/
-
-# Cython debug symbols
-cython_debug/
-
-# IDE settings
-.vscode/
-.idea/
\ No newline at end of file
+__pycache__
diff --git a/.idea/Pilgrim.iml b/.idea/Pilgrim.iml
new file mode 100644
index 0000000..3defecc
--- /dev/null
+++ b/.idea/Pilgrim.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..daedced
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..3586794
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1748985568579
+
+
+ 1748985568579
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
index 7d8d17a..d9baacb 100644
--- a/README.md
+++ b/README.md
@@ -1,50 +1,3 @@
# Python_Pilgrim
-## Overview
-
-**Python_Pilgrim** is a Python-based travel diary application designed to help users document and manage their travel experiences. The project provides tools for recording trips, organizing travel notes, and storing memories in a structured and accessible format.
-
-## Features
-
-- Create and manage travel diaries
-- Add, edit, and delete travel entries
-- Organize trips by date, location, or theme
-- Store photos, notes, and other media
-- Export and share travel logs
-
-## Requirements
-- Python 3.8 or higher
-- Linux operating system (tested on Ubuntu 20.04+)
-- Visual Studio Code (VSCode) for development (optional but strongly recommended)
-- pip (Python package installer)
-- Optional: virtualenv for isolated environments
-
-## Installation
-
-1. Clone the repository:
- ```bash
- git clone https://github.com/gmbrax/Pilgrim.git
- ```
-2. Navigate to the project directory:
- ```bash
- cd Pilgrim
- ```
-3. Create a virtual environment and, then, activate it:
- ```bash
- python -m venv .venv
- source .venv/bin/activate
- ```
-4. Install the required dependencies:
- ```bash
- pip install -r requirements.txt
- ```
-
-## Usage
-
-To run the main application, execute:
-
-```bash
-python ??>.py
-```
-
-This will start the Python_Pilgrim application. Follow the on-screen instructions to create and manage your travel diaries.
\ No newline at end of file
+Python Based Travel Diary
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index 805875b..6f29a00 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -26,6 +26,6 @@ src-layout = true
Homepage = "https://git.gustavomiranda.xyz/GHMiranda/Pilgrim"
Issues = "https://git.gustavomiranda.xyz/GHMiranda/Pilgrim"
[tool.hatch.build.targets.wheel]
-packages = ["src/pilgrim"]
+packages = ["src/Pilgrim"]
[project.scripts]
-pilgrim = "pilgrim:main"
+pilgrim = "Pilgrim:main"
diff --git a/requirements.txt b/requirements.txt
deleted file mode 100644
index 182fec2..0000000
--- a/requirements.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-greenlet==3.2.3
-SQLAlchemy==2.0.41
-typing_extensions==4.14.0
\ No newline at end of file
diff --git a/src/Pilgrim/Application.py b/src/Pilgrim/Application.py
new file mode 100644
index 0000000..429798b
--- /dev/null
+++ b/src/Pilgrim/Application.py
@@ -0,0 +1,9 @@
+from Pilgrim.Database import Database
+
+
+class Application:
+ def __init__(self):
+ self.database = Database()
+
+ def run(self):
+ self.database.create()
diff --git a/src/database.py b/src/Pilgrim/Database.py
similarity index 83%
rename from src/database.py
rename to src/Pilgrim/Database.py
index 794d698..d28fdee 100644
--- a/src/database.py
+++ b/src/Pilgrim/Database.py
@@ -4,6 +4,7 @@ from sqlalchemy.orm import sessionmaker
Base = declarative_base()
+
class Database:
def __init__(self):
self.engine = create_engine(
@@ -11,10 +12,10 @@ class Database:
echo=False,
connect_args={"check_same_thread": False},
)
- self.session = sessionmaker(bind=self.engine, autoflush=False, autocommit=False)
+ self.Session = sessionmaker(bind=self.engine, autoflush=False, autocommit=False)
def create(self):
Base.metadata.create_all(self.engine)
def get_db(self):
- return self.session()
+ return self.Session()
diff --git a/src/Pilgrim/TravelDiary.py b/src/Pilgrim/TravelDiary.py
new file mode 100644
index 0000000..ea03940
--- /dev/null
+++ b/src/Pilgrim/TravelDiary.py
@@ -0,0 +1,9 @@
+from sqlalchemy import Column, String, Integer
+
+from Pilgrim import Application, Base
+
+
+class TravelDiary(Base):
+ __tablename__ = "TravelDiary"
+ id = Column(Integer, primary_key=True)
+ name = Column(String)
diff --git a/src/Pilgrim/__init__.py b/src/Pilgrim/__init__.py
new file mode 100644
index 0000000..201964a
--- /dev/null
+++ b/src/Pilgrim/__init__.py
@@ -0,0 +1,6 @@
+from Pilgrim.Application import Application
+from Pilgrim.command import main
+from Pilgrim.Database import Database, Base
+from Pilgrim.TravelDiary import TravelDiary
+
+__all__ = ["Application", "Database", "TravelDiary", "main", "Base"]
diff --git a/src/command.py b/src/Pilgrim/command.py
similarity index 56%
rename from src/command.py
rename to src/Pilgrim/command.py
index 3d23d5a..d132d04 100644
--- a/src/command.py
+++ b/src/Pilgrim/command.py
@@ -1,4 +1,4 @@
-from src.application import Application
+from Pilgrim import Application
def main():
diff --git a/src/__init__.py b/src/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/src/application.py b/src/application.py
deleted file mode 100644
index 2dcb79a..0000000
--- a/src/application.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from src.database import Database
-from src.service.servicemanager import ServiceManager
-
-
-class Application:
- def __init__(self):
- self.database = Database()
-
- def run(self):
- self.database.create()
-
- def get_service_manager(self):
- session = self.database.session()
- session_manager = ServiceManager()
- session_manager.set_session(session)
- return session_manager
diff --git a/src/models/__init__.py b/src/models/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/src/models/entry.py b/src/models/entry.py
deleted file mode 100644
index 8775faf..0000000
--- a/src/models/entry.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from typing import Any
-
-from sqlalchemy import Column, Integer, String, ForeignKey
-from sqlalchemy.orm import relationship
-
-from src.models.photo_in_entry import photo_entry_association
-from src.database import Base
-
-
-class Entry(Base):
- __tablename__ = "entries"
- id = Column(Integer, primary_key=True)
- title = Column(String)
- text = Column(String)
- date = Column(String)
- photos = relationship(
- "Photo",
- secondary=photo_entry_association,
- back_populates="entries")
- fk_travel_diary_id = Column(Integer, ForeignKey("travel_diaries.id"),nullable=False)
- def __init__(self, title: str, text: str, date: str, travel_diary_id: int, **kw: Any):
- super().__init__(**kw)
- self.title = title
- self.text = text
- self.date = date
- self.fk_travel_diary_id = travel_diary_id
diff --git a/src/models/photo.py b/src/models/photo.py
deleted file mode 100644
index d4eb6a9..0000000
--- a/src/models/photo.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from typing import Any
-
-from sqlalchemy.orm import relationship
-from sqlalchemy import Column, Integer, String, ForeignKey
-
-from src.models.photo_in_entry import photo_entry_association
-from src.database import Base
-
-
-class Photo(Base):
- __tablename__ = "photos"
- 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"
- )
-
- fk_travel_diary_id = Column(Integer, ForeignKey("travel_diaries.id"),nullable=False)
-
- def __init__(self, filepath, name, addition_date=None, caption=None, entries=None, **kw: Any):
- super().__init__(**kw)
- self.filepath = filepath
- self.name = name
- self.addition_date = addition_date
- self.caption = caption
- self.entries = entries
diff --git a/src/models/photo_in_entry.py b/src/models/photo_in_entry.py
deleted file mode 100644
index d07d4fa..0000000
--- a/src/models/photo_in_entry.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from sqlalchemy import Table, Column, Integer, ForeignKey
-
-from src.database 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('photos.id'),nullable=False),
- Column('fk_entry_id', Integer, ForeignKey('entries.id'),nullable=False))
diff --git a/src/models/travel_diary.py b/src/models/travel_diary.py
deleted file mode 100644
index 15c8579..0000000
--- a/src/models/travel_diary.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from typing import Any
-
-from src.database import Base
-
-from sqlalchemy import Column, String, Integer
-
-
-class TravelDiary(Base):
- __tablename__ = "travel_diaries"
- id = Column(Integer, primary_key=True)
- name = Column(String)
-
- def __init__(self, name: str, **kw: Any):
- super().__init__(**kw)
- self.name = name
diff --git a/src/service/__init__.py b/src/service/__init__.py
deleted file mode 100644
index e69de29..0000000
diff --git a/src/service/entry_service.py b/src/service/entry_service.py
deleted file mode 100644
index 2afedd0..0000000
--- a/src/service/entry_service.py
+++ /dev/null
@@ -1,48 +0,0 @@
-from typing import List
-
-from src.models.entry import Entry
-from src.models.travel_diary import TravelDiary
-
-
-class EntryService:
- def __init__(self,session):
- self.session = session
-
- def create(self, travel_diary_id:int, title: str, text: str, date: str, ):
- travel_diary = self.session.query(TravelDiary).filter(TravelDiary.id == travel_diary_id).first()
- if not travel_diary:
- return None
- new_entry = Entry(title,text,date,travel_diary_id)
- self.session.add(new_entry)
- self.session.commit()
- self.session.refresh(new_entry)
- return new_entry
-
- def read_by_id(self,entry_id:int)->Entry:
- entry = self.session.query(Entry).filter(Entry.id == entry_id).first()
- return entry
-
- def read_all(self)-> List[Entry]:
- entries = self.session.query(Entry).all()
- return entries
-
- def update(self,entry_src:Entry,entry_dst:Entry) -> Entry | None:
- original:Entry = self.read_by_id(entry_src.id)
- if original:
- original.title = entry_dst.title
- original.text = entry_dst.text
- original.date = entry_dst.date
- original.fk_travel_diary_id = entry_dst.fk_travel_diary_id
- original.photos = entry_dst.photos
- self.session.commit()
- self.session.refresh(original)
- return original
- return None
-
- def delete(self,entry_src:Entry)-> Entry | None:
- excluded = self.read_by_id(entry_src.id)
- if excluded is not None:
- self.session.delete(excluded)
- self.session.commit()
- return excluded
- return None
diff --git a/src/service/photo_service.py b/src/service/photo_service.py
deleted file mode 100644
index 2232ad1..0000000
--- a/src/service/photo_service.py
+++ /dev/null
@@ -1,48 +0,0 @@
-from pathlib import Path
-from typing import List
-
-from src.models.photo import Photo
-from src.models.travel_diary import TravelDiary
-
-
-class PhotoService:
- def __init__(self, session):
- self.session = session
-
- def create(self, filepath:Path, name:str, travel_diary_id, addition_date=None, caption=None, ) -> Photo | None:
- travel_diary = self.session.query(TravelDiary).filter(TravelDiary.id == travel_diary_id).first()
- if not travel_diary:
- return None
- new_photo = Photo(filepath, name, addition_date=addition_date, caption=caption)
- self.session.add(new_photo)
- self.session.commit()
- self.session.refresh(new_photo)
-
- return new_photo
- def read_by_id(self, photo_id:int) -> Photo:
- return self.session.query(Photo).get(photo_id)
-
- def read_all(self) -> List[Photo]:
- return self.session.query(Photo).all()
-
- def update(self,photo_src:Photo,photo_dst:Photo) -> Photo | None:
- original:Photo = self.read_by_id(photo_src.id)
- if original:
- original.filepath = photo_dst.filepath
- original.name = photo_dst.name
- original.addition_date = photo_dst.addition_date
- original.caption = photo_dst.caption
- original.entries.extend(photo_dst.entries)
- self.session.commit()
- self.session.refresh(original)
- return original
- return None
-
- def delete(self, photo_src:Photo) -> Photo | None:
- excluded = self.read_by_id(photo_src.id)
- if excluded:
- self.session.delete(excluded)
- self.session.commit()
- self.session.refresh(excluded)
- return excluded
- return None
diff --git a/src/service/servicemanager.py b/src/service/servicemanager.py
deleted file mode 100644
index 3e9c3a6..0000000
--- a/src/service/servicemanager.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from src.service.entry_service import EntryService
-from src.service.travel_diary_service import TravelDiaryService
-
-
-class ServiceManager:
- def __init__(self):
- self.session = None
- def set_session(self, session):
- self.session = session
- def get_session(self):
- return self.session
- def get_entry_service(self):
- if self.session is not None:
- return EntryService(self.session)
- return None
- def get_travel_diary_service(self):
- if self.session is not None:
- return TravelDiaryService(self.session)
- return None
diff --git a/src/service/travel_diary_service.py b/src/service/travel_diary_service.py
deleted file mode 100644
index 846f27d..0000000
--- a/src/service/travel_diary_service.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from src.models.travel_diary import TravelDiary
-
-
-class TravelDiaryService:
- def __init__(self,session):
- self.session = session
- def create(self, name:str):
- new_travel_diary = TravelDiary(name)
- self.session.add(new_travel_diary)
- self.session.commit()
- self.session.refresh(new_travel_diary)
-
- return new_travel_diary
-
- def read_by_id(self, travel_id:int):
- return self.session.query(TravelDiary).get(travel_id)
-
- def read_all(self):
- return self.session.query(TravelDiary).all()
-
- def update(self, travel_diary_src:TravelDiary,travel_diary_dst:TravelDiary):
- original = self.read_by_id(travel_diary_src.id)
- if original is not None:
- original.name = travel_diary_dst.name
- self.session.commit()
- self.session.refresh(original)
- return original
-
- def delete(self, travel_diary_src:TravelDiary):
- excluded = self.read_by_id(travel_diary_src.id)
- if excluded is not None:
- self.session.delete(travel_diary_src)
- self.session.commit()
- return excluded
- return None