diff --git a/cps/db.py b/cps/db.py index bb460c6ca..49fdfcc77 100644 --- a/cps/db.py +++ b/cps/db.py @@ -999,7 +999,6 @@ class CalibreDB: # Apply eager loading for authors to avoid N+1 queries base_query = base_query.options(selectinload(Books.authors)) - if len(join) == 6: base_query = base_query.outerjoin(join[0], join[1]).outerjoin(join[2]).outerjoin(join[3], join[4]).outerjoin(join[5]) @@ -1015,7 +1014,7 @@ class CalibreDB: return base_query.filter(Books.id.in_(fts_ids)) # Fallback to traditional search with optimized subqueries - q = list() + # q = list() author_terms = re.split("[, ]+", term) # Use subquery for authors to avoid expensive .any() with OR @@ -1026,7 +1025,7 @@ class CalibreDB: for author_term in author_terms: author_filters.append(func.lower(Authors.name).ilike("%" + author_term + "%")) if author_filters: - author_subquery = author_subquery.filter(or_(*author_filters)) + author_subquery = author_subquery.filter(and_(*author_filters)) # Build optimized filter expressions cc = self.get_cc_columns(config, filter_config_custom_read=True) diff --git a/cps/editbooks.py b/cps/editbooks.py index a2c39b9d9..1999e7564 100644 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -406,7 +406,7 @@ def edit_book_param(param, vals, multi=False): kobo_sync_status.remove_synced_book(book.id) continue elif param == 'read_status': - error = helper.edit_book_read_status(book.id, vals['value'] == "True") + error = helper.edit_book_read_status(book.id, vals['value'] == "True", True) if error: if multi: out.append({"success":False, "msg":error}) diff --git a/cps/helper.py b/cps/helper.py index dd6298826..28edb9f32 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -303,7 +303,7 @@ def get_sorted_author(value): return value2 -def edit_book_read_status(book_id, read_status=None): +def edit_book_read_status(book_id, read_status=None, archived=False): if not config.config_read_column: book = ub.session.query(ub.ReadBook).filter(and_(ub.ReadBook.user_id == int(current_user.id), ub.ReadBook.book_id == book_id)).first() @@ -327,7 +327,7 @@ def edit_book_read_status(book_id, read_status=None): else: try: calibre_db.create_functions(config) - book = calibre_db.get_filtered_book(book_id) + book = calibre_db.get_filtered_book(book_id, archived) book_read_status = getattr(book, 'custom_column_' + str(config.config_read_column)) if len(book_read_status): if read_status is None: diff --git a/requirements.txt b/requirements.txt index 44f016cd8..9c858ede5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ Flask-Principal>=0.3.2,<0.5.1 Flask>=1.0.2,<3.2.0 iso-639>=0.4.5,<0.5.0;python_version<'3.12' pycountry>=20.0.0,<25.0.0;python_version>='3.12' -PyPDF>=3.15.6,<5.5.0 +PyPDF>=6.1.3,<6.5.0 pytz>=2016.10 requests>=2.32.0,<2.33.0 SQLAlchemy>=1.3.0,<2.1.0 diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index 9fa8449f8..f66af93cb 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
Start Time: 2025-12-04 20:11:40
+Start Time: 2025-12-05 16:37:33
Stop Time: 2025-12-05 03:15:12
+Stop Time: 2025-12-05 23:59:26
Duration: 5h 48 min
+Duration: 6h 5 min
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 782, in test_title_sort
- self.assertEqual(7, len(self.search(' book ')))
-AssertionError: 7 != 0
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 106, in test_upload_cbz_coverformats
- self.fill_basic_config({'config_uploading': 1})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 392, in fill_basic_config
- cls._fill_basic_config(elements)
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 304, 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.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 609, in test_upload_edit_role
- self.fill_basic_config({'config_uploading': 1})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 392, in fill_basic_config
- cls._fill_basic_config(elements)
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 304, 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.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 235, in test_upload_metadata_cb7
- self.fill_basic_config({'config_uploading': 1})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 392, in fill_basic_config
- cls._fill_basic_config(elements)
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 304, 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.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 162, in test_upload_metadata_cbr
- self.fill_basic_config({'config_uploading': 1})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 392, in fill_basic_config
- cls._fill_basic_config(elements)
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 304, 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.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_additional_books.py", line 203, in test_upload_metadata_cbt
- self.fill_basic_config({'config_uploading': 1})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 392, in fill_basic_config
- cls._fill_basic_config(elements)
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 304, 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.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 619, in test_edit_custom_categories - self.assertEqual(len(self.search(u'人 Ü')), 1) -AssertionError: 0 != 1+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 610, in test_edit_custom_categories + self.assertEqual(len(self.search(u'人 Ü')), 0) +AssertionError: 4 != 0
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 590, in test_edit_custom_comment
- self.assertEqual(len(self.adv_search({u'custom_column_5': u'人1 Ä'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 591, in test_edit_custom_comment
+ self.assertEqual(len(self.search(u'人1 Ä')), 0)
+AssertionError: 8 != 0
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 672, in test_edit_custom_date
- self.assertEqual(len(self.adv_search({u'custom_column_2_start': u'16/7/2015'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 628, in test_edit_custom_float
- self.assertEqual(len(self.adv_search({'custom_column_8_low': '-2.5'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 649, in test_edit_custom_int
- self.assertEqual(len(self.adv_search({u'custom_column_4_low': u'0'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 527, in test_edit_custom_rating
- self.assertEqual(len(self.adv_search({u'custom_column_1': u'3'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 553, in test_edit_custom_single_select
- self.assertEqual(len(self.adv_search({u'custom_column_9': u'人物'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 571, in test_edit_custom_text
- self.assertEqual(len(self.adv_search({u'custom_column_10': u'人 Ä'})), 0)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-TypeError: object of type 'bool' has no len()
+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_books.py", line 572, in test_edit_custom_text
+ self.assertEqual(len(self.search(u'人 Ä')), 0)
+AssertionError: 8 != 0
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_author_gdrive.py", line 592, in test_rename_capital_on_upload
- self.assertEqual('Useless', details['title'])
- ~~~~~~~^^^^^^^^^
-KeyError: 'title'
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 86, in test_search_books_list - bl = self.check_search(bl, "genot", 4, "Categories", "Gênot") - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 51, in check_search - self.assertEqual(count, len(bl['table'])) -AssertionError: 4 != 1-
Traceback (most recent call last):
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 534, in _make_request
+ response = conn.getresponse()
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connection.py", line 516, in getresponse
+ httplib_response = super().getresponse()
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/http/client.py", line 1428, in getresponse
+ response.begin()
+ File "/usr/lib/python3.12/http/client.py", line 331, in begin
+ version, status, reason = self._read_status()
+ ^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/http/client.py", line 292, in _read_status
+ line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/socket.py", line 707, in readinto
+ return self._sock.recv_into(b)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+TimeoutError: timed out
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py", line 731, in test_edit_custom_text
+ vals = self.get_book_details(5)
+ ^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1493, in get_book_details
+ cls.driver.get(root_url + "/book/" + str(id))
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 479, in get
+ self.execute(Command.GET, {"url": url})
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 451, in execute
+ response = cast(RemoteConnection, self.command_executor).execute(driver_command, params)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.py", line 404, in execute
+ return self._request(command_info[0], url, body=data)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.py", line 428, in _request
+ response = self._conn.request(method, url, body=body, headers=headers, timeout=self._client_config.timeout)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/_request_methods.py", line 143, in request
+ return self.request_encode_body(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/_request_methods.py", line 278, in request_encode_body
+ return self.urlopen(method, url, **extra_kw)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/poolmanager.py", line 443, in urlopen
+ response = conn.urlopen(method, u.request_uri, **kw)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen
+ retries = retries.increment(
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/util/retry.py", line 474, in increment
+ raise reraise(type(error), error, _stacktrace)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/util/util.py", line 39, in reraise
+ raise value
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen
+ response = self._make_request(
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 536, in _make_request
+ self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
+ raise ReadTimeoutError(
+urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=48897): Read timed out. (read timeout=120)
+ Traceback (most recent call last):
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 534, in _make_request
+ response = conn.getresponse()
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connection.py", line 516, in getresponse
+ httplib_response = super().getresponse()
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/http/client.py", line 1428, in getresponse
+ response.begin()
+ File "/usr/lib/python3.12/http/client.py", line 331, in begin
+ version, status, reason = self._read_status()
+ ^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/http/client.py", line 292, in _read_status
+ line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/usr/lib/python3.12/socket.py", line 707, in readinto
+ return self._sock.recv_into(b)
+ ^^^^^^^^^^^^^^^^^^^^^^^
+TimeoutError: timed out
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py", line 596, in test_edit_language
+ self.get_book_details(3)
+ File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1493, in get_book_details
+ cls.driver.get(root_url + "/book/" + str(id))
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 479, in get
+ self.execute(Command.GET, {"url": url})
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 451, in execute
+ response = cast(RemoteConnection, self.command_executor).execute(driver_command, params)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.py", line 404, in execute
+ return self._request(command_info[0], url, body=data)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.py", line 428, in _request
+ response = self._conn.request(method, url, body=body, headers=headers, timeout=self._client_config.timeout)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/_request_methods.py", line 143, in request
+ return self.request_encode_body(
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/_request_methods.py", line 278, in request_encode_body
+ return self.urlopen(method, url, **extra_kw)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/poolmanager.py", line 443, in urlopen
+ response = conn.urlopen(method, u.request_uri, **kw)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 841, in urlopen
+ retries = retries.increment(
+ ^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/util/retry.py", line 474, in increment
+ raise reraise(type(error), error, _stacktrace)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/util/util.py", line 39, in reraise
+ raise value
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 787, in urlopen
+ response = self._make_request(
+ ^^^^^^^^^^^^^^^^^^^
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 536, in _make_request
+ self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
+ File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py", line 367, in _raise_timeout
+ raise ReadTimeoutError(
+urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host='localhost', port=48897): Read timed out. (read timeout=120)
+ Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_kobo_sync.py", line 373, in test_sync_shelf - self.assertEqual(1, len(data), data) -AssertionError: 1 != 0 : []-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_list_orders.py", line 458, in test_order_authors_all_links - books[0]['author_ele'][0].click() - ~~~~~^^^ -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_list_orders.py", line 367, in test_order_series_all_links - self.assertTrue(list) -AssertionError: False is not true-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_list_orders.py", line 557, in test_publisher_click_none - self.assertTrue(int(element['count']) > 0) - ^^^^^^^ -UnboundLocalError: cannot access local variable 'element' where it is not associated with a value-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_merge_books_list.py", line 61, in test_delete_book - bl['table'][0]['Delete']['element'].click() - ~~~~~~~~~~~~~~^^^^^^^^^^ -KeyError: 'Delete'-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_opds_feed.py", line 634, in test_opds_search - self.assertEqual(200, r.status_code) -AssertionError: 200 != 500-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 460, in test_add_shelf_from_search - self.check_element_on_page((By.ID, "add-to-shelf")).click() - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -AttributeError: 'bool' object has no attribute 'click'-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 557, in test_adv_search_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 306, in test_arrange_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 190, in test_create_public_shelf
- self.create_user('invalid', {'edit_shelf_role': 0, 'password': '123AbC*!', 'email': 'bac@b.com'})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1026, in create_user
- return cls.change_user(config)
- ^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1080, in change_user
- ele = cls.driver.find_element(By.ID, checkbox)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 922, in find_element
- return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 454, in execute
- self.error_handler.check_response(response)
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 232, in check_response
- raise exception_class(message, screen, stacktrace)
-selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="edit_shelf_role"]; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#nosuchelementexception
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 601, in test_create_public_shelf_no_permission
- self.create_user("test1", {'password': '123AbC*!', 'email': 'a11@bc.com'})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1026, in create_user
- return cls.change_user(config)
- ^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1096, in change_user
- ele = cls.driver.find_element(By.ID, key)
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 922, in find_element
- return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 454, in execute
- self.error_handler.check_response(response)
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 232, in check_response
- raise exception_class(message, screen, stacktrace)
-selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="password"]; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors#nosuchelementexception
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 290, in test_delete_book_of_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 65, in test_private_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 375, in test_public_private_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 126, in test_public_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 213, in test_rename_shelf - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 416, in test_shelf_action_non_shelf_edit_role - self.assertTrue(self.check_element_on_page((By.ID, "flash_success"))) -AssertionError: False is not true-
Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 494, in test_shelf_anonymous
- self.fill_basic_config({'config_anonbrowse': 1})
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 392, in fill_basic_config
- cls._fill_basic_config(elements)
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 304, 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.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
- Traceback (most recent call last):
- File "/home/ozzie/Development/calibre-web-test/test/test_shelf.py", line 52, in tearDown
- self.login('admin','admin123')
- File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 91, in login
- WebDriverWait(cls.driver, 5).until(EC.presence_of_element_located((By.ID, "username")))
- File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/support/wait.py", line 138, in until
- raise TimeoutException(message, screen, stacktrace)
-selenium.common.exceptions.TimeoutException: Message:
-Stacktrace:
-RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8
-WebDriverError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:202:5
-NoSuchElementError@chrome://remote/content/shared/webdriver/Errors.sys.mjs:555:5
-dom.find/</<@chrome://remote/content/shared/DOM.sys.mjs:136:16
-