aboutsummaryrefslogtreecommitdiff
path: root/src/book_store.py
diff options
context:
space:
mode:
authorJoris Guyonvarch2025-12-28 15:23:45 +0100
committerJoris Guyonvarch2025-12-28 15:24:30 +0100
commit9eb75ef6686446e7d229be1b1941af2392e41d93 (patch)
tree1000c5c172290cf4d4b424669a14e11687cca573 /src/book_store.py
parent3e2cabfe9bd4548b4993c6b822e84450230ea563 (diff)
Add checkbox to remove book sources
Diffstat (limited to 'src/book_store.py')
-rw-r--r--src/book_store.py12
1 files changed, 9 insertions, 3 deletions
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)