def upload_book(file): filename = book_staging_upload_set.save(file) if filename: extension = os.path.splitext(filename)[1][1:] if extension == 'epub': e = epub.Epub(book_staging_upload_set.path(filename)) if e: meta = e.metadata if 'creator' in meta: meta['author'] = meta['creator'] del meta['creator'] # if the book has a cover, copy it to tmp directory if e.cover: cover_filename = os.path.basename(e.cover) # todo conflicts if os.path.exists(tmp_cover_upload_set.path(cover_filename)): cover_filename = tmp_cover_upload_set.resolve_conflict(tmp_cover_upload_set.config.destination, cover_filename) dest = tmp_cover_upload_set.path(cover_filename) extracted = e.extract_cover(dest) if extracted: meta['cover'] = cover_filename else: meta = None else: meta = None return filename, meta else: return None
def move_file_from_staging(self, filename): if self.filename: self.remove_file() if filename: self.filename = filename src = book_staging_upload_set.path(self.filename) dest_path = app.config['LIBRARY_PATH'] if os.path.exists(os.path.join(dest_path, self.filename)): self.filename = book_upload_set.resolve_conflict(dest_path, self.filename) shutil.move(src, book_upload_set.path(self.filename))