aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/book_form.py5
-rw-r--r--src/book_store.py12
2 files changed, 13 insertions, 4 deletions
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)