mirror of https://github.com/gmbrax/Pilgrim.git
Compare commits
No commits in common. "7274d670ec62fd70ae883ed1547648b714c4c191" and "c5edb835b656f0f398e21de21ac844eb4d993783" have entirely different histories.
7274d670ec
...
c5edb835b6
|
|
@ -1,4 +1,3 @@
|
||||||
import re
|
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
|
|
@ -55,24 +54,3 @@ class EntryService:
|
||||||
self.session.commit()
|
self.session.commit()
|
||||||
return excluded
|
return excluded
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def delete_references_for_specific_photo(self, entry: Entry, photo_hash: str) -> Entry:
|
|
||||||
regex = r"\[\[photo::" + re.escape(photo_hash) + r"\]\]"
|
|
||||||
entry.text = re.sub(regex, lambda match: ' ' * len(match.group(0)), entry.text)
|
|
||||||
|
|
||||||
self.session.commit()
|
|
||||||
self.session.refresh(entry)
|
|
||||||
|
|
||||||
return entry
|
|
||||||
|
|
||||||
def delete_all_photo_references(self, entry: Entry, commit=True) -> Entry:
|
|
||||||
if not entry.photos:
|
|
||||||
return entry
|
|
||||||
photo_hashes = {photo.photo_hash[:8] for photo in entry.photos}
|
|
||||||
regex = r"\[\[photo::(" + "|".join(re.escape(h) for h in photo_hashes) + r")\]\]"
|
|
||||||
entry.text = re.sub(regex, lambda match: ' ' * len(match.group(0)), entry.text)
|
|
||||||
if commit:
|
|
||||||
self.session.commit()
|
|
||||||
self.session.refresh(entry)
|
|
||||||
return entry
|
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ class PhotoService:
|
||||||
return original
|
return original
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def delete(self, photo_src: Photo, commit=True) -> Photo | None:
|
def delete(self, photo_src: Photo) -> Photo | None:
|
||||||
excluded = self.read_by_id(photo_src.id)
|
excluded = self.read_by_id(photo_src.id)
|
||||||
if excluded:
|
if excluded:
|
||||||
# Store photo data before deletion
|
# Store photo data before deletion
|
||||||
|
|
@ -162,7 +162,6 @@ class PhotoService:
|
||||||
file_path.unlink()
|
file_path.unlink()
|
||||||
|
|
||||||
self.session.delete(excluded)
|
self.session.delete(excluded)
|
||||||
if commit:
|
|
||||||
self.session.commit()
|
self.session.commit()
|
||||||
|
|
||||||
return deleted_photo
|
return deleted_photo
|
||||||
|
|
|
||||||
|
|
@ -10,9 +10,6 @@ from sqlalchemy.exc import IntegrityError
|
||||||
from pilgrim.models.travel_diary import TravelDiary
|
from pilgrim.models.travel_diary import TravelDiary
|
||||||
from unidecode import unidecode
|
from unidecode import unidecode
|
||||||
|
|
||||||
from pilgrim.service.photo_service import PhotoService
|
|
||||||
from pilgrim.service.entry_service import EntryService
|
|
||||||
|
|
||||||
class TravelDiaryService:
|
class TravelDiaryService:
|
||||||
def __init__(self, session):
|
def __init__(self, session):
|
||||||
self.session = session
|
self.session = session
|
||||||
|
|
@ -159,24 +156,6 @@ class TravelDiaryService:
|
||||||
self.session.commit()
|
self.session.commit()
|
||||||
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
||||||
def delete_all_photos(self,travel_diary: TravelDiary):
|
|
||||||
diary = self.read_by_id(travel_diary.id)
|
|
||||||
photo_service = PhotoService(self.session)
|
|
||||||
entry_service = EntryService(self.session)
|
|
||||||
if diary is not None:
|
|
||||||
|
|
||||||
for entry in list(diary.entries):
|
|
||||||
entry_service.delete_all_photo_references(entry,commit=False)
|
|
||||||
|
|
||||||
for photo in list(diary.photos):
|
|
||||||
photo_service.delete(photo,commit=False)
|
|
||||||
|
|
||||||
self.session.commit()
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ class SettingsScreen(Screen):
|
||||||
self.save_button = Button("Save",id="DiarySettingsScreen-SaveButton" )
|
self.save_button = Button("Save",id="DiarySettingsScreen-SaveButton" )
|
||||||
self.cancel_button = Button("Cancel",id="DiarySettingsScreen-cancel_button")
|
self.cancel_button = Button("Cancel",id="DiarySettingsScreen-cancel_button")
|
||||||
self.apply_button = Button("Apply",id="DiarySettingsScreen-ApplyButton")
|
self.apply_button = Button("Apply",id="DiarySettingsScreen-ApplyButton")
|
||||||
|
self.backup_diary_button = Button("Backup Diary")
|
||||||
self.delete_diary_button = Button("Delete Diary",id="DiarySettingsScreen-DeleteDiaryButton")
|
self.delete_diary_button = Button("Delete Diary",id="DiarySettingsScreen-DeleteDiaryButton")
|
||||||
self.delete_all_entries_button = Button("Delete All Entries",id="DiarySettingsScreen-DeleteAllEntriesButton")
|
self.delete_all_entries_button = Button("Delete All Entries",id="DiarySettingsScreen-DeleteAllEntriesButton")
|
||||||
self.delete_all_photos_button = Button("Delete All Photos",id="DiarySettingsScreen-DeleteAllPhotosButton")
|
self.delete_all_photos_button = Button("Delete All Photos",id="DiarySettingsScreen-DeleteAllPhotosButton")
|
||||||
|
|
@ -47,6 +47,12 @@ class SettingsScreen(Screen):
|
||||||
id="DiarySettingsScreen-DeleteDiaryButtonContainer",
|
id="DiarySettingsScreen-DeleteDiaryButtonContainer",
|
||||||
classes="DiarySettingsScreen-DeleteDiaryButtonContainer Button_Container"
|
classes="DiarySettingsScreen-DeleteDiaryButtonContainer Button_Container"
|
||||||
)
|
)
|
||||||
|
self.backup_diary_button_container = Container(
|
||||||
|
Label("Backup Diary:"),
|
||||||
|
self.backup_diary_button,
|
||||||
|
id="DiarySettingsScreen-BackupDiaryButtonContainer",
|
||||||
|
classes="DiarySettingsScreen-BackupDiaryButtonContainer Button_Container"
|
||||||
|
)
|
||||||
self.delete_all_entries_button_container = Container(
|
self.delete_all_entries_button_container = Container(
|
||||||
Label("Delete All Entries:"),
|
Label("Delete All Entries:"),
|
||||||
self.delete_all_entries_button,
|
self.delete_all_entries_button,
|
||||||
|
|
|
||||||
|
|
@ -10,23 +10,11 @@ class DeleteAllPhotosModal(DeleteYesConfirmationModal):
|
||||||
def __init__(self,diary_id:int):
|
def __init__(self,diary_id:int):
|
||||||
super().__init__(diary_id)
|
super().__init__(diary_id)
|
||||||
self.head_text.update("Are you sure you want to delete all photos from this diary?")
|
self.head_text.update("Are you sure you want to delete all photos from this diary?")
|
||||||
self.delete_button.add_class("DeleteDiaryModal-DeleteButton")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@on(Button.Pressed, ".DeleteDiaryModal-DeleteButton")
|
@on(Button.Pressed, "#DeleteDiaryModal-DeleteButton")
|
||||||
def on_delete_button_pressed(self, event):
|
def on_delete_button_pressed(self, event):
|
||||||
|
|
||||||
from pilgrim.ui.screens.diary_list_screen import DiaryListScreen
|
|
||||||
|
|
||||||
self.result = True
|
self.result = True
|
||||||
self._delete_all_photo()
|
|
||||||
self.dismiss()
|
self.dismiss()
|
||||||
self.app.push_screen(DiaryListScreen())
|
|
||||||
|
|
||||||
def _delete_all_photo(self):
|
|
||||||
diary = self.app.service_manager.get_travel_diary_service().read_by_id(self.diary_id)
|
|
||||||
if self.app.service_manager.get_travel_diary_service().delete_all_photos(diary):
|
|
||||||
self.notify("All photos deleted successfully")
|
|
||||||
else:
|
|
||||||
self.notify("Failed to delete all photos")
|
|
||||||
Loading…
Reference in New Issue