From 9eb75ef6686446e7d229be1b1941af2392e41d93 Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Sun, 28 Dec 2025 15:23:45 +0100 Subject: Add checkbox to remove book sources --- src/book_form.py | 5 ++++- src/book_store.py | 12 +++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/book_form.py b/src/book_form.py index a04248b..6ac70f4 100644 --- a/src/book_form.py +++ b/src/book_form.py @@ -72,6 +72,9 @@ class BookForm(Gtk.Window): # Books self._book_entries = BookEntries(self) box.append(self._book_entries) + self._remove_book_sources = Gtk.CheckButton.new_with_label(' Supprimer les sources') + self._remove_book_sources.set_active(True) + box.append(self._remove_book_sources) # Init values if book: @@ -117,7 +120,7 @@ class BookForm(Gtk.Window): cover = self._cover_entry.get_image() books = self._book_entries.get_books() - book_id = book_store.store(self._library, self._conn, data, cover, books, self._book) + book_id = book_store.store(self._library, self._conn, data, cover, books, self._book, self._remove_book_sources.get_active()) if book_id: self.close() self._on_book_saved(book_id, data) diff --git a/src/book_store.py b/src/book_store.py index ece5415..71455bd 100644 --- a/src/book_store.py +++ b/src/book_store.py @@ -11,7 +11,7 @@ import src.book_files as book_files logger = logging.getLogger(__name__) -def store(library, conn, data, cover, books, book = None): +def store(library, conn, data, cover, books, book, remove_book_sources): book_id = book['id'] if book else nanoid.generate() directory = f'{library}/{book_id}' @@ -21,8 +21,8 @@ def store(library, conn, data, cover, books, book = None): save_cover(cover, directory) if book: - update_books(directory, books) if not already_exist(directory, books) or has_delete(library, book_id, books): + update_books(directory, books, remove_book_sources) else: create_books(directory, books) @@ -56,7 +56,7 @@ def has_delete(library, book_id, books): return True return False -def update_books(directory, books): +def update_books(directory, books, remove_book_sources): try: tmp_dir = f'{directory}/tmp' os.makedirs(tmp_dir, exist_ok=True) @@ -79,6 +79,12 @@ def update_books(directory, books): dest = f'{directory}/{name}{ext}' logger.info('Copying %s to %s', src, dest) shutil.copyfile(src, dest) + # Remove sources outside of book dir + if remove_book_sources: + for path in books.keys(): + if os.path.dirname(path) != directory: + logger.info('Removing source: %s', path) + pathlib.Path.unlink(path) finally: # Remove tmp shutil.rmtree(f'{directory}/tmp', ignore_errors=True) -- cgit v1.2.3