1
0
mirror of https://github.com/janeczku/calibre-web synced 2026-06-02 10:42:16 +00:00

Support kobo/auth/refresh endpoint

This commit is contained in:
Ozzie Isaacs
2026-01-10 12:20:52 +01:00
parent d73f9fdd6f
commit 2700b4f0d1
2 changed files with 103 additions and 320 deletions
+1
View File
@@ -1044,6 +1044,7 @@ def make_calibre_web_auth_response():
@csrf.exempt
@kobo.route("/v1/auth/refresh", methods=["POST"])
@kobo.route("/v1/auth/device", methods=["POST"])
@requires_kobo_auth
def HandleAuthRequest():
+102 -320
View File
@@ -37,20 +37,20 @@
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3" style="margin-top:50px;">
<p class='text-justify attribute'><strong>Start Time: </strong>2025-12-20 19:34:51</p>
<p class='text-justify attribute'><strong>Start Time: </strong>2026-01-09 20:49:38</p>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Stop Time: </strong>2025-12-21 03:04:35</p>
<p class='text-justify attribute'><strong>Stop Time: </strong>2026-01-10 04:16:57</p>
</div>
</div>
<div class="row">
<div class="col-xs-6 col-md-6 col-sm-offset-3">
<p class='text-justify attribute'><strong>Duration: </strong>6h 12 min</p>
<p class='text-justify attribute'><strong>Duration: </strong>6h 13 min</p>
</div>
</div>
</div>
@@ -102,11 +102,11 @@
</tr>
<tr id="su" class="failClass">
<tr id="su" class="passClass">
<td>TestAnonymous</td>
<td class="text-center">13</td>
<td class="text-center">11</td>
<td class="text-center">2</td>
<td class="text-center">13</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@@ -143,33 +143,11 @@
<tr id="ft1.4" class="none bg-danger">
<tr id='pt1.4' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestAnonymous - test_guest_change_visibility_format</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft1.4')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft1.4" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft1.4').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_anonymous.py&#34;, line 349, in test_guest_change_visibility_format
self.assertEqual(books[0][&#39;id&#39;], &#39;CBR&#39;)
AssertionError: &#39;1&#39; != &#39;CBR&#39;
- 1
+ CBR</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -183,33 +161,11 @@ AssertionError: &#39;1&#39; != &#39;CBR&#39;
<tr id="ft1.6" class="none bg-danger">
<tr id='pt1.6' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestAnonymous - test_guest_change_visibility_language</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft1.6')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft1.6" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft1.6').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_anonymous.py&#34;, line 262, in test_guest_change_visibility_language
self.assertEqual(books[0][&#39;id&#39;], &#39;eng&#39;)
AssertionError: &#39;1&#39; != &#39;eng&#39;
- 1
+ eng</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -638,12 +594,12 @@ AssertionError: &#39;1&#39; != &#39;eng&#39;
<tr id="su" class="errorClass">
<tr id="su" class="passClass">
<td>TestCliGdrivedb</td>
<td class="text-center">4</td>
<td class="text-center">2</td>
<td class="text-center">1</td>
<td class="text-center">1</td>
<td class="text-center">4</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
<a onclick="showClassDetail('c5', 4)">Detail</a>
@@ -670,142 +626,30 @@ AssertionError: &#39;1&#39; != &#39;eng&#39;
<tr id="et5.3" class="none bg-info">
<tr id='pt5.3' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestCliGdrivedb - test_gdrive_db_nonwrite</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et5.3')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et5.3" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et5.3').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py&#34;, line 534, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connection.py&#34;, line 516, in getresponse
httplib_response = super().getresponse()
^^^^^^^^^^^^^^^^^^^^^
File &#34;/usr/lib/python3.12/http/client.py&#34;, line 1428, in getresponse
response.begin()
File &#34;/usr/lib/python3.12/http/client.py&#34;, line 331, in begin
version, status, reason = self._read_status()
^^^^^^^^^^^^^^^^^^^
File &#34;/usr/lib/python3.12/http/client.py&#34;, line 292, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), &#34;iso-8859-1&#34;)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/usr/lib/python3.12/socket.py&#34;, 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 &#34;/home/ozzie/Development/calibre-web-test/test/test_cli_gdrive.py&#34;, line 170, in test_gdrive_db_nonwrite
self.driver.get(&#34;http://127.0.0.1:&#34; + PORTS[0])
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py&#34;, line 479, in get
self.execute(Command.GET, {&#34;url&#34;: url})
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py&#34;, line 451, in execute
response = cast(RemoteConnection, self.command_executor).execute(driver_command, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.py&#34;, line 404, in execute
return self._request(command_info[0], url, body=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/selenium/webdriver/remote/remote_connection.py&#34;, line 428, in _request
response = self._conn.request(method, url, body=body, headers=headers, timeout=self._client_config.timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/_request_methods.py&#34;, line 143, in request
return self.request_encode_body(
^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/_request_methods.py&#34;, line 278, in request_encode_body
return self.urlopen(method, url, **extra_kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/poolmanager.py&#34;, line 443, in urlopen
response = conn.urlopen(method, u.request_uri, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py&#34;, line 841, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/util/retry.py&#34;, line 474, in increment
raise reraise(type(error), error, _stacktrace)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/util/util.py&#34;, line 39, in reraise
raise value
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py&#34;, line 787, in urlopen
response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py&#34;, line 536, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py&#34;, line 367, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host=&#39;localhost&#39;, port=57687): Read timed out. (read timeout=120)</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id="ft5.4" class="none bg-danger">
<tr id='pt5.4' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestCliGdrivedb - test_no_database</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft5.4')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft5.4" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft5.4').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/venv/lib/python3.12/site-packages/urllib3/connectionpool.py&#34;, line 534, in _make_request
response = conn.getresponse()
^^^^^^^^^^^^^^^^^^
TimeoutError: timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_cli_gdrive.py&#34;, line 225, in test_no_database
self.driver.get(&#34;http://127.0.0.1:&#34; + PORTS[0])
urllib3.exceptions.ReadTimeoutError: HTTPConnectionPool(host=&#39;localhost&#39;, port=57687): Read timed out. (read timeout=120)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_cli_gdrive.py&#34;, line 237, in test_no_database
self.assertFalse(True, &#34;Inital config failed with normal database&#34;)
AssertionError: True is not false : Inital config failed with normal database</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
<tr id="su" class="passClass">
<tr id="su" class="failClass">
<td>TestCoverEditBooks</td>
<td class="text-center">2</td>
<td class="text-center">2</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@@ -824,11 +668,31 @@ AssertionError: True is not false : Inital config failed with normal database</p
<tr id='pt6.2' class='hiddenRow bg-success'>
<tr id="ft6.2" class="none bg-danger">
<td>
<div class='testcase'>TestCoverEditBooks - test_upload_jpg</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft6.2')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft6.2" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft6.2').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_cover_edit_books.py&#34;, line 88, in test_upload_jpg
self.assertGreater(diff(BytesIO(web), BytesIO(jpg), delete_diff_file=True), 0.009)
AssertionError: 0.005658288961589503 not greater than 0.009</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@@ -1356,11 +1220,11 @@ AssertionError: True is not false : Inital config failed with normal database</p
<tr id="su" class="skipClass">
<tr id="su" class="failClass">
<td>TestEditBooks</td>
<td class="text-center">38</td>
<td class="text-center">37</td>
<td class="text-center">0</td>
<td class="text-center">36</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">
@@ -1711,11 +1575,31 @@ AssertionError: True is not false : Inital config failed with normal database</p
<tr id='pt13.37' class='hiddenRow bg-success'>
<tr id="ft13.37" class="none bg-danger">
<td>
<div class='testcase'>TestEditBooks - test_upload_cover_hdd</div>
</td>
<td colspan='6' align='center'>PASS</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft13.37')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft13.37" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft13.37').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books.py&#34;, line 878, in test_upload_cover_hdd
self.assertGreater(diff(BytesIO(bmp), BytesIO(png), delete_diff_file=True), 0.009)
AssertionError: 0.00645269357807853 not greater than 0.009</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
</tr>
@@ -2195,13 +2079,13 @@ AssertionError: True is not false : Inital config failed with normal database</p
<tr id="su" class="errorClass">
<tr id="su" class="passClass">
<td>TestLoadMetadata</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
<a onclick="showClassDetail('c18', 1)">Detail</a>
</td>
@@ -2209,32 +2093,11 @@ AssertionError: True is not false : Inital config failed with normal database</p
<tr id="et18.1" class="none bg-info">
<tr id='pt18.1' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestLoadMetadata - test_load_metadata</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et18.1')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et18.1" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et18.1').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_edit_books_metadata.py&#34;, line 87, in test_load_metadata
if results[cont][&#39;source&#39;] == &#39;https://comicvine.gamespot.com/&#39;:
~~~~~~~^^^^^^
IndexError: list index out of range</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -2767,12 +2630,12 @@ AssertionError: 30 != 20</pre>
<tr id="su" class="errorClass">
<tr id="su" class="skipClass">
<td>TestFilePicker</td>
<td class="text-center">3</td>
<td class="text-center">1</td>
<td class="text-center">2</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">1</td>
<td class="text-center">
<a onclick="showClassDetail('c27', 3)">Detail</a>
@@ -2816,32 +2679,11 @@ AssertionError: 30 != 20</pre>
<tr id="et27.3" class="none bg-info">
<tr id='pt27.3' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestFilePicker - test_two_filepickers</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_et27.3')">ERROR</a>
</div>
<!--css div popup start-->
<div id="div_et27.3" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_et27.3').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_filepicker.py&#34;, line 88, in test_two_filepickers
accordions[0].click()
~~~~~~~~~~^^^
IndexError: list index out of range</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -4517,11 +4359,11 @@ IndexError: list index out of range</pre>
<tr id="su" class="failClass">
<tr id="su" class="skipClass">
<td>TestShelf</td>
<td class="text-center">17</td>
<td class="text-center">15</td>
<td class="text-center">1</td>
<td class="text-center">16</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">1</td>
<td class="text-center">
@@ -4549,31 +4391,11 @@ IndexError: list index out of range</pre>
<tr id="ft47.3" class="none bg-danger">
<tr id='pt47.3' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestShelf - test_adv_search_shelf</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft47.3')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft47.3" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft47.3').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_shelf.py&#34;, line 569, in test_adv_search_shelf
self.assertEqual(len(self.adv_search({u&#39;include_shelf&#39;: u&#39;Search&#39;, &#39;title&#39;: &#39;book&#39;})), 2)
AssertionError: 7 != 2</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -5081,11 +4903,11 @@ AssertionError: 7 != 2</pre>
<tr id="su" class="failClass">
<tr id="su" class="passClass">
<td>TestUploadAudio</td>
<td class="text-center">12</td>
<td class="text-center">11</td>
<td class="text-center">1</td>
<td class="text-center">12</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@@ -5149,31 +4971,11 @@ AssertionError: 7 != 2</pre>
<tr id="ft54.7" class="none bg-danger">
<tr id='pt54.7' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestUploadAudio - test_upload_mp3</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft54.7')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft54.7" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft54.7').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_upload_audio.py&#34;, line 121, in test_upload_mp3
self.assertAlmostEqual(diff(BytesIO(self.png_original), BytesIO(cover_image), delete_diff_file=True), 0.0, delta=0.006)
AssertionError: 0.0075997182498730486 != 0.0 within 0.006 delta (0.0075997182498730486 difference)</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -5224,11 +5026,11 @@ AssertionError: 0.0075997182498730486 != 0.0 within 0.006 delta (0.0075997182498
<tr id="su" class="failClass">
<tr id="su" class="passClass">
<td>TestUploadEPubs</td>
<td class="text-center">6</td>
<td class="text-center">5</td>
<td class="text-center">1</td>
<td class="text-center">6</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">0</td>
<td class="text-center">
@@ -5283,31 +5085,11 @@ AssertionError: 0.0075997182498730486 != 0.0 within 0.006 delta (0.0075997182498
<tr id="ft55.6" class="none bg-danger">
<tr id='pt55.6' class='hiddenRow bg-success'>
<td>
<div class='testcase'>TestUploadEPubs - test_upload_epub_lang</div>
</td>
<td colspan='6'>
<div class="text-center">
<a class="popup_link text-center" onfocus='blur()' onclick="showTestDetail('div_ft55.6')">FAIL</a>
</div>
<!--css div popup start-->
<div id="div_ft55.6" class="popup_window test_output" style="display:block;">
<div class='close_button pull-right'>
<button type="button" class="close" aria-label="Close" onfocus="this.blur();"
onclick="document.getElementById('div_ft55.6').style.display='none'"><span
aria-hidden="true">&times;</span></button>
</div>
<div class="text-left pull-left">
<pre class="text-left">Traceback (most recent call last):
File &#34;/home/ozzie/Development/calibre-web-test/test/test_upload_epubs.py&#34;, line 104, in test_upload_epub_lang
self.assertEqual(len(self.adv_search({u&#39;include_language&#39;: u&#39;Tedesco&#39;})), 1)
AssertionError: 12 != 1</pre>
</div>
<div class="clearfix"></div>
</div>
<!--css div popup end-->
</td>
<td colspan='6' align='center'>PASS</td>
</tr>
@@ -6209,9 +5991,9 @@ AssertionError: 12 != 1</pre>
<tr id='total_row' class="text-center bg-grey">
<td>Total</td>
<td>538</td>
<td>521</td>
<td>7</td>
<td>528</td>
<td>3</td>
<td>0</td>
<td>7</td>
<td>&nbsp;</td>
</tr>
@@ -6252,7 +6034,7 @@ AssertionError: 12 != 1</pre>
<tr>
<th>APScheduler</th>
<td>3.11.1</td>
<td>3.11.2</td>
<td>Basic</td>
</tr>
@@ -6402,7 +6184,7 @@ AssertionError: 12 != 1</pre>
<tr>
<th>urllib3</th>
<td>2.6.2</td>
<td>2.6.3</td>
<td>Basic</td>
</tr>
@@ -6414,7 +6196,7 @@ AssertionError: 12 != 1</pre>
<tr>
<th>Werkzeug</th>
<td>3.1.4</td>
<td>3.1.5</td>
<td>Basic</td>
</tr>
@@ -6702,13 +6484,13 @@ AssertionError: 12 != 1</pre>
<tr>
<th>jsonschema</th>
<td>4.25.1</td>
<td>4.26.0</td>
<td>TestKoboSync</td>
</tr>
<tr>
<th>jsonschema</th>
<td>4.25.1</td>
<td>4.26.0</td>
<td>TestKoboSyncBig</td>
</tr>
@@ -6720,7 +6502,7 @@ AssertionError: 12 != 1</pre>
<tr>
<th>jsonschema</th>
<td>4.25.1</td>
<td>4.26.0</td>
<td>TestLdapLogin</td>
</tr>
@@ -6762,7 +6544,7 @@ AssertionError: 12 != 1</pre>
</div>
<script>
drawCircle(521, 7, 3, 7);
drawCircle(528, 3, 0, 7);
showCase(5);
</script>