diff --git a/cps/editbooks.py b/cps/editbooks.py index 9fce12725..fcf043a50 100755 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -670,7 +670,7 @@ def upload_single_file(request, book, book_id): # Queue uploader info link = '{}'.format(url_for('web.show_book', book_id=book.id), escape(book.title)) uploadText=_(u"File format %(ext)s added to %(book)s", ext=file_ext.upper(), book=link) - WorkerThread.add(current_user.name, TaskUpload(uploadText), escape(book.title)) + WorkerThread.add(current_user.name, TaskUpload(uploadText, escape(book.title))) return uploader.process( saved_filename, *os.path.splitext(requested_file.filename), diff --git a/cps/tasks/convert.py b/cps/tasks/convert.py index 90513b09f..c8b8229c5 100644 --- a/cps/tasks/convert.py +++ b/cps/tasks/convert.py @@ -118,21 +118,24 @@ class TaskConvert(CalibreTask): self.title = cur_book.title self.results['path'] = cur_book.path self.results['title'] = self.title - new_format = db.Data(name=os.path.basename(file_path), - book_format=self.settings['new_book_format'].upper(), - book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext)) - try: - local_db.session.merge(new_format) - local_db.session.commit() - except SQLAlchemyError as e: - local_db.session.rollback() - log.error("Database error: %s", e) + new_format = local_db.session.query(db.Data).filter(db.Data.book == book_id)\ + .filter(db.Data.format == self.settings['new_book_format'].upper()).one_or_none() + if not new_format: + new_format = db.Data(name=os.path.basename(file_path), + book_format=self.settings['new_book_format'].upper(), + book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext)) + try: + local_db.session.merge(new_format) + local_db.session.commit() + except SQLAlchemyError as e: + local_db.session.rollback() + log.error("Database error: %s", e) + local_db.session.close() + self._handleError(error_message) + return + self._handleSuccess() local_db.session.close() - self._handleError(error_message) - return - self._handleSuccess() - local_db.session.close() - return os.path.basename(file_path + format_new_ext) + return os.path.basename(file_path + format_new_ext) else: log.info("Book id %d - target format of %s does not exist. Moving forward with convert.", book_id, @@ -153,22 +156,25 @@ class TaskConvert(CalibreTask): if check == 0: cur_book = local_db.get_book(book_id) if os.path.isfile(file_path + format_new_ext): - new_format = db.Data(name=cur_book.data[0].name, + new_format = local_db.session.query(db.Data).filter(db.Data.book == book_id) \ + .filter(db.Data.format == self.settings['new_book_format'].upper()).one_or_none() + if not new_format: + new_format = db.Data(name=cur_book.data[0].name, book_format=self.settings['new_book_format'].upper(), book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext)) - try: - local_db.session.merge(new_format) - local_db.session.commit() - if self.settings['new_book_format'].upper() in ['KEPUB', 'EPUB', 'EPUB3']: - ub_session = ini() - remove_synced_book(book_id, True, ub_session) - ub_session.close() - except SQLAlchemyError as e: - local_db.session.rollback() - log.error("Database error: %s", e) - local_db.session.close() - self._handleError(error_message) - return + try: + local_db.session.merge(new_format) + local_db.session.commit() + if self.settings['new_book_format'].upper() in ['KEPUB', 'EPUB', 'EPUB3']: + ub_session = ini() + remove_synced_book(book_id, True, ub_session) + ub_session.close() + except SQLAlchemyError as e: + local_db.session.rollback() + log.error("Database error: %s", e) + local_db.session.close() + self._handleError(error_message) + return self.results['path'] = cur_book.path self.title = cur_book.title self.results['title'] = self.title diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index bd12238ca..1be6540c0 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
Start Time: 2022-02-01 20:32:05
+Start Time: 2022-02-06 21:09:18
Stop Time: 2022-02-02 00:57:41
+Stop Time: 2022-02-07 01:33:46
Duration: 3h 39 min
+Duration: 3h 38 min
Traceback (most recent call last): + File "/home/ozzie/Development/calibre-web-test/test/test_ebook_convert_kepubify.py", line 163, in test_convert_only + self.assertEqual(ret[-1]['result'], 'Finished') +AssertionError: 'Failed' != 'Finished' +- Failed ++ Finished+
Traceback (most recent call last): + File "/home/ozzie/Development/calibre-web-test/test/test_ebook_convert_kepubify_gdrive.py", line 213, in test_convert_only + self.assertEqual(ret[-1]['result'], 'Finished') +AssertionError: 'Failed' != 'Finished' +- Failed ++ Finished+
Traceback (most recent call last):
+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 709, in test_delete_role
+ self.fill_basic_config({'config_uploading': 0})
+ File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 358, in fill_basic_config
+ cls._fill_basic_config(elements)
+ File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 268, in _fill_basic_config
+ WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "config_port")))
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.8/site-packages/selenium/webdriver/support/wait.py", line 89, in until
+ raise TimeoutException(message, screen, stacktrace)
+selenium.common.exceptions.TimeoutException: Message:
+Stacktrace:
+WebDriverError@chrome://remote/content/shared/webdriver/Errors.jsm:183:5
+NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.jsm:395:5
+element.find/</<@chrome://remote/content/marionette/element.js:300:16
+ Traceback (most recent call last): + File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 861, in test_details_popup + books[1][0]['ele'].click() +IndexError: list index out of range+
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_author_gdrive.py", line 562, in test_rename_capital_on_upload - self.assertFalse(self.check_element_on_page((By.ID, "flash_danger"))) -AssertionError: <selenium.webdriver.remote.webelement.WebElement (session="34a2afba-2e3f-4f75-bc09-67899f2ccfba", element="08372364-79c8-4996-97da-de74437e794d")> is not false-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_metadata.py", line 167, in test_load_metadata - self.assertGreaterEqual(diff(BytesIO(cover), BytesIO(original_cover), delete_diff_file=True), 0.05) -AssertionError: 0.0 not greater than or equal to 0.05-