From bfbd918862ef7e8c37cbbf9605171d7fbd33c97f Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sat, 3 Oct 2026 21:12:45 +0200 Subject: [PATCH] Fixes after testrun --- cps/gdrive.py | 11 +- cps/static/js/get_meta.js | 2 +- cps/static/js/table.js | 13 +- .../caliblur/templates/config_edit.html | 12 + cps/themes/caliblur/templates/detail.html | 2 +- cps/themes/caliblur/templates/logviewer.html | 2 +- .../standard/templates/config_edit.html | 12 + cps/themes/standard/templates/detail.html | 2 +- cps/themes/standard/templates/logviewer.html | 2 +- cps/themes/standard/templates/user_edit.html | 2 +- optional-requirements.txt | 1 + pyproject.toml | 1 + test/Calibre-Web TestSummary_Linux.html | 3559 +++++++++++++++-- 13 files changed, 3310 insertions(+), 311 deletions(-) diff --git a/cps/gdrive.py b/cps/gdrive.py index 366354efb..dec2f4e26 100644 --- a/cps/gdrive.py +++ b/cps/gdrive.py @@ -138,9 +138,14 @@ try: response = gdriveutils.getChangeById(gdriveutils.Gdrive.Instance().drive, j['id']) log.debug('%r', response) if response: - dbpath = os.path.join(config.config_calibre_dir, "metadata.db").encode() - if not response['deleted'] and response['file']['title'] == 'metadata.db' \ - and response['file']['md5Checksum'] != hashlib.md5(dbpath).hexdigest(): # nosec + dbpath = os.path.join(config.config_calibre_dir, "metadata.db") + if response['deleted'] or response['file']['title'] != 'metadata.db': + return '' + checksum = hashlib.md5() # nosec + with open(dbpath, 'rb') as database: + for chunk in iter(lambda: database.read(65536), b''): + checksum.update(chunk) + if response['file']['md5Checksum'] != checksum.hexdigest(): tmp_dir = get_temp_dir() log.info('Database file updated') diff --git a/cps/static/js/get_meta.js b/cps/static/js/get_meta.js index 475be67f0..92964a262 100644 --- a/cps/static/js/get_meta.js +++ b/cps/static/js/get_meta.js @@ -138,7 +138,7 @@ $(function () { var initial = String(element.data("initial")) === "true"; var val = element.prop('checked'); var params = {id : id, value: val}; - $('[data-related="' + id + '"]').toggle(val); + $('[data-related="' + id + '"]').toggleClass("d-none", !val); if (!initial) { params['initial'] = initial; params['query'] = keyword; diff --git a/cps/static/js/table.js b/cps/static/js/table.js index 4f1c41525..d790f52a3 100644 --- a/cps/static/js/table.js +++ b/cps/static/js/table.js @@ -25,7 +25,7 @@ function syncTomSelects() { if (typeof TomSelect === "undefined") { return; } - $(".multi_selector").each(function () { + $("select.multi_selector").each(function () { if (!this.tomselect) { new TomSelect(this, { persist: false, @@ -44,7 +44,7 @@ function clearTomSelects() { if (typeof TomSelect === "undefined") { return; } - $(".multi_selector").each(function () { + $("select.multi_selector").each(function () { if (this.tomselect) { this.tomselect.clear(); } @@ -971,9 +971,10 @@ function handle_header_buttons () { $(".button_head").addClass("disabled"); $(".multi_head").attr("aria-disabled", true); $(".multi_head").addClass("hidden"); - $(".multi_selector").attr("aria-disabled", true); - $(".multi_selector").attr("disabled", true); + $("select.multi_selector").attr("aria-disabled", true); + $("select.multi_selector").attr("disabled", true); $(".header_select").attr("disabled", true); + syncTomSelects(); } else { $(".mass_selection").removeClass("disabled"); $(".mass_selection").attr("aria-disabled", false); @@ -983,8 +984,8 @@ function handle_header_buttons () { $(".button_head").removeClass("disabled"); $(".multi_head").attr("aria-disabled", false); $(".multi_head").removeClass("hidden"); - $(".multi_selector").attr("aria-disabled", false); - $(".multi_selector").removeAttr("disabled"); + $("select.multi_selector").attr("aria-disabled", false); + $("select.multi_selector").removeAttr("disabled"); $(".header_select").removeAttr("disabled"); syncTomSelects(); } diff --git a/cps/themes/caliblur/templates/config_edit.html b/cps/themes/caliblur/templates/config_edit.html index e141cfab2..ff1bf0cb2 100644 --- a/cps/themes/caliblur/templates/config_edit.html +++ b/cps/themes/caliblur/templates/config_edit.html @@ -401,6 +401,18 @@ + {% for field, caption in [ + ('config_password_number', _('Enforce number')), + ('config_password_lower', _('Enforce lowercase characters')), + ('config_password_upper', _('Enforce uppercase characters')), + ('config_password_character', _('Enforce characters (needed For Chinese/Japanese/Korean Characters)')), + ('config_password_special', _('Enforce special characters')) + ] %} +
+ + +
+ {% endfor %} diff --git a/cps/themes/caliblur/templates/detail.html b/cps/themes/caliblur/templates/detail.html index bcf63b178..8ed2ee75c 100644 --- a/cps/themes/caliblur/templates/detail.html +++ b/cps/themes/caliblur/templates/detail.html @@ -225,7 +225,7 @@ {{ identifier.format_type() }} {% else %} - {{ identifier.format_type() }} + {{ identifier.format_type() }} {% endif %} {% endfor %}

diff --git a/cps/themes/caliblur/templates/logviewer.html b/cps/themes/caliblur/templates/logviewer.html index b4b5fa7b8..c90cf0f23 100644 --- a/cps/themes/caliblur/templates/logviewer.html +++ b/cps/themes/caliblur/templates/logviewer.html @@ -9,7 +9,7 @@ {% else %}
- {{_('Calibre-Web Log: ')}} {{_("Stream output, can't be displayed")}} + {{_("Stream output, can't be displayed")}}
{% endif %} {% if accesslog_enable %} diff --git a/cps/themes/standard/templates/config_edit.html b/cps/themes/standard/templates/config_edit.html index 7386b09b2..99efd4857 100644 --- a/cps/themes/standard/templates/config_edit.html +++ b/cps/themes/standard/templates/config_edit.html @@ -401,6 +401,18 @@ + {% for field, caption in [ + ('config_password_number', _('Enforce number')), + ('config_password_lower', _('Enforce lowercase characters')), + ('config_password_upper', _('Enforce uppercase characters')), + ('config_password_character', _('Enforce characters (needed For Chinese/Japanese/Korean Characters)')), + ('config_password_special', _('Enforce special characters')) + ] %} +
+ + +
+ {% endfor %} diff --git a/cps/themes/standard/templates/detail.html b/cps/themes/standard/templates/detail.html index c7bf3ce39..277373497 100644 --- a/cps/themes/standard/templates/detail.html +++ b/cps/themes/standard/templates/detail.html @@ -171,7 +171,7 @@ {{ identifier.format_type() }} {% else %} - {{ identifier.format_type() }} + {{ identifier.format_type() }} {% endif %} {% endfor %}

diff --git a/cps/themes/standard/templates/logviewer.html b/cps/themes/standard/templates/logviewer.html index 487f23a91..49fd8d486 100644 --- a/cps/themes/standard/templates/logviewer.html +++ b/cps/themes/standard/templates/logviewer.html @@ -10,7 +10,7 @@ {% else %}
- {{_('Calibre-Web Log: ')}} {{_("Stream output, can't be displayed")}} + {{_("Stream output, can't be displayed")}}
{% endif %} {% if accesslog_enable %} diff --git a/cps/themes/standard/templates/user_edit.html b/cps/themes/standard/templates/user_edit.html index 62cee9d17..cce266fb5 100644 --- a/cps/themes/standard/templates/user_edit.html +++ b/cps/themes/standard/templates/user_edit.html @@ -1,6 +1,6 @@ {% extends theme("layout.html") %} {% block body %} -
+

{{title}}

diff --git a/optional-requirements.txt b/optional-requirements.txt index 85d970580..c1ae7ae62 100644 --- a/optional-requirements.txt +++ b/optional-requirements.txt @@ -30,6 +30,7 @@ SQLAlchemy-Utils>=0.33.5,<0.43.0 # metadata extraction rarfile>=3.2,<5.0 scholarly>=1.2.0,<1.8 +bibtexparser>=1.1.0,<2.0.0 markdown2>=2.0.0,<2.6.0 html2text>=2020.1.16,<2025.4.16 python-dateutil>=2.1,<2.10.0 diff --git a/pyproject.toml b/pyproject.toml index 7e8fda08e..bba3b398d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -103,6 +103,7 @@ oauth = [ metadata = [ "rarfile>=3.2,<5.0", "scholarly>=1.2.0,<1.8", + "bibtexparser>=1.1.0,<2.0.0", "markdown2>=2.0.0,<2.6.0", "html2text>=2020.1.16,<2025.4.16", "python-dateutil>=2.1,<2.10.0", diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index 4b3a8178c..d99ad62ce 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2026-08-10T16:13:52.000001

+

Start Time: 2026-10-03T15:40:05.000001

-

Stop Time: 2026-08-10T18:05:55.000001

+

Stop Time: 2026-10-03T17:21:43.000001

-

Duration: 6h 4 min

+

Duration: 5h 45 min

@@ -234,12 +234,12 @@ - + TestBackupMetadata 21 - 21 - 0 - 0 + 15 + 2 + 4 0 Detail @@ -311,11 +311,32 @@ - +
TestBackupMetadata - test_backup_change_book_rating
- PASS + +
+ FAIL +
+ + + + @@ -392,47 +413,232 @@ - +
TestBackupMetadata - test_backup_change_custom_float
- PASS + +
+ ERROR +
+ + + + - +
TestBackupMetadata - test_backup_change_custom_int
- PASS + +
+ ERROR +
+ + + + - +
TestBackupMetadata - test_backup_change_custom_rating
- PASS + +
+ ERROR +
+ + + + - +
TestBackupMetadata - test_backup_change_custom_text
- PASS + +
+ ERROR +
+ + + + - +
TestBackupMetadata - test_upload_book
- PASS + +
+ FAIL +
+ + + + @@ -645,11 +851,11 @@ - + TestCalibreWebListOrders 16 - 16 - 0 + 14 + 2 0 0 @@ -713,20 +919,62 @@ - +
TestCalibreWebListOrders - test_order_authors_all_links
- PASS + +
+ FAIL +
+ + + + - +
TestCalibreWebListOrders - test_order_series_all_links
- PASS + +
+ FAIL +
+ + + + @@ -804,11 +1052,11 @@ - + TestCalibreWebVisibilitys 35 - 35 - 0 + 32 + 3 0 0 @@ -1016,20 +1264,66 @@ - +
TestCalibreWebVisibilitys - test_hide_custom_column
- PASS + +
+ FAIL +
+ + + + - +
TestCalibreWebVisibilitys - test_link_column_to_read_status
- PASS + +
+ FAIL +
+ + + + @@ -1043,11 +1337,32 @@ - +
TestCalibreWebVisibilitys - test_read_status_visible
- PASS + +
+ FAIL +
+ + + + @@ -1391,12 +1706,12 @@ - + TestEbookConvertCalibre 16 - 16 - 0 + 13 0 + 3 0 Detail @@ -1423,11 +1738,33 @@ - +
TestEbookConvertCalibre - test_convert_email
- PASS + +
+ ERROR +
+ + + + @@ -1522,20 +1859,64 @@ - +
TestEbookConvertCalibre - test_ssl_smtp_setup_error
- PASS + +
+ ERROR +
+ + + + - +
TestEbookConvertCalibre - test_starttls_smtp_setup_error
- PASS + +
+ ERROR +
+ + + + @@ -1550,12 +1931,12 @@ - + TestEbookConvertCalibreGDrive 7 - 7 - 0 - 0 + 2 + 1 + 4 0 Detail @@ -1582,47 +1963,212 @@ - +
TestEbookConvertCalibreGDrive - test_convert_only
- PASS + +
+ ERROR +
+ + + + - +
TestEbookConvertCalibreGDrive - test_convert_parameter
- PASS + +
+ FAIL +
+ + + + - +
TestEbookConvertCalibreGDrive - test_email_failed
- PASS + +
+ ERROR +
+ + + + - +
TestEbookConvertCalibreGDrive - test_email_only
- PASS + +
+ ERROR +
+ + + + - +
TestEbookConvertCalibreGDrive - test_thumbnail_cache
- PASS + +
+ ERROR +
+ + + + @@ -1721,11 +2267,11 @@ - + TestEditAdditionalBooks 18 - 18 - 0 + 13 + 5 0 0 @@ -1753,11 +2299,34 @@ - +
TestEditAdditionalBooks - test_delete_book
- PASS + +
+ FAIL +
+ + + + @@ -1780,38 +2349,124 @@ - +
TestEditAdditionalBooks - test_edit_book_identifier
- PASS + +
+ FAIL +
+ + + + - +
TestEditAdditionalBooks - test_edit_book_identifier_capital
- PASS + +
+ FAIL +
+ + + + - +
TestEditAdditionalBooks - test_edit_book_identifier_standard
- PASS + +
+ FAIL +
+ + + + - +
TestEditAdditionalBooks - test_edit_special_book_identifier
- PASS + +
+ FAIL +
+ + + + @@ -1898,15 +2553,15 @@ - + TestEditAuthors - 10 + 11 10 0 - 0 + 1 0 - Detail + Detail @@ -1977,7 +2632,7 @@ -
TestEditAuthors - test_rename_capital_on_upload
+
TestEditAuthors - test_rename_author_with_null_author_sort
PASS @@ -1986,14 +2641,66 @@ -
TestEditAuthors - test_rename_tag_emphasis_mark_onupload
+
TestEditAuthors - test_rename_capital_on_upload
PASS - + + +
TestEditAuthors - test_rename_tag_emphasis_mark_onupload
+ + +
+ ERROR +
+ + + + + + + + +
TestEditAuthors - test_xss_author_edit
@@ -2081,12 +2788,12 @@ - + TestEditAuthorsSmb 9 - 9 - 0 + 6 0 + 3 0 Detail @@ -2149,40 +2856,169 @@ - +
TestEditAuthorsSmb - test_rename_author_emphasis_mark_onupload
- PASS + +
+ ERROR +
+ + + + - +
TestEditAuthorsSmb - test_rename_capital_on_upload
- PASS + +
+ ERROR +
+ + + + - +
TestEditAuthorsSmb - test_rename_tag_emphasis_mark_onupload
- PASS + +
+ ERROR +
+ + + + - + TestEditBooks 39 - 38 - 0 - 0 + 26 + 10 + 2 1 Detail @@ -2209,11 +3045,52 @@ - +
TestEditBooks - test_edit_author
- PASS + +
+ ERROR +
+ + + + @@ -2236,83 +3113,286 @@ - +
TestEditBooks - test_edit_custom_bool
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_categories
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_comment
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_date
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_float
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_int
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_rating
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_single_select
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooks - test_edit_custom_text
- PASS + +
+ FAIL +
+ + + + @@ -2344,11 +3424,32 @@ - +
TestEditBooks - test_edit_rating
- PASS + +
+ FAIL +
+ + + + @@ -2362,11 +3463,52 @@ - +
TestEditBooks - test_edit_title
- PASS + +
+ ERROR +
+ + + + @@ -2560,12 +3702,12 @@ - + TestEditBooksList 20 - 20 - 0 + 4 0 + 16 0 Detail @@ -2610,157 +3752,877 @@ - +
TestEditBooksList - test_bookslist_edit_comment
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_category
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_comment
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_enum
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_float
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_int
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_ratings
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_cust_text
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_languages
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_publisher
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_series
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_seriesindex
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_bookslist_edit_title
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_list_visibility
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_restricted_rights
- PASS + +
+ ERROR +
+ + + + - +
TestEditBooksList - test_search_books_list
- PASS + +
+ ERROR +
+ + + + - + TestEditBooksOnGdrive 20 - 19 - 1 - 0 + 9 + 9 + 2 0 Detail @@ -2778,11 +4640,52 @@ - +
TestEditBooksOnGdrive - test_edit_author
- PASS + +
+ ERROR +
+ + + + @@ -2805,65 +4708,224 @@ - +
TestEditBooksOnGdrive - test_edit_custom_bool
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooksOnGdrive - test_edit_custom_categories
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooksOnGdrive - test_edit_custom_float
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooksOnGdrive - test_edit_custom_int
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooksOnGdrive - test_edit_custom_rating
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooksOnGdrive - test_edit_custom_single_select
- PASS + +
+ FAIL +
+ + + + - +
TestEditBooksOnGdrive - test_edit_custom_text
- PASS + +
+ FAIL +
+ + + + @@ -2886,11 +4948,32 @@ - +
TestEditBooksOnGdrive - test_edit_rating
- PASS + +
+ FAIL +
+ + + + @@ -2904,11 +4987,52 @@ - +
TestEditBooksOnGdrive - test_edit_title
- PASS + +
+ ERROR +
+ + + + @@ -2957,9 +5081,9 @@
Traceback (most recent call last):
-  File "/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py", line 911, in test_watch_metadata
+  File "/home/ozzie/Development/calibre-web-test/test/test_edit_ebooks_gdrive.py", line 907, in test_watch_metadata
     self.assertNotIn('series', book)
-AssertionError: 'series' unexpectedly found in {'id': 5, 'reader': [], 'title': 'testbook', 'author': ['John Döe'], 'rating': 0, 'languages': ['English'], 'identifier': [], 'cover': '/cover/5/og?c=1786369888', 'tag': [], 'publisher': ['Randomhäus'], 'pubdate': 'Jan 19, 2017', 'comment': 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Aenean commodo ligula eget dolor.Aenean massa.Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.Nulla consequat massa quis enim.Donec pede justo, fringilla vel, aliquet nec, vulputate', 'add_shelf': [], 'del_shelf': [], 'edit_enable': True, 'kindle': None, 'kindlebtn': None, 'download': ['EPUB\n                                            (6.7 kB)'], 'read': False, 'archived': False, 'series_all': 'Book 1 of test', 'series_index': '1', 'series': 'test', 'cust_columns': []}
+AssertionError: 'series' unexpectedly found in {'id': 5, 'reader': [], 'title': 'testbook', 'author': ['John Döe'], 'rating': 1, 'languages': ['English'], 'identifier': [], 'cover': '/cover/5/og?c=1791032841', 'tag': [], 'publisher': ['Randomhäus'], 'pubdate': 'Jan 19, 2017', 'comment': 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Aenean commodo ligula eget dolor.Aenean massa.Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem.Nulla consequat massa quis enim.Donec pede justo, fringilla vel, aliquet nec, vulputate', 'add_shelf': [], 'del_shelf': [], 'edit_enable': True, 'kindle': None, 'kindlebtn': None, 'download': ['EPUB\n                                            (6.7 kB)'], 'read': False, 'archived': False, 'series_all': 'Book 1 of test', 'series_index': '1', 'series': 'test', 'cust_columns': [{'Text': 'Custom Bool 1 Ä', 'value': ''}, {'Text': 'Custom Integer 人物', 'value': '0'}, {'Text': 'Custom categories\\|, 人物', 'value': 'KuKu 人 Ü'}, {'Text': 'Custom Float 人物', 'value': '-2.50'}, {'Text': 'Custom 人物 Enum', 'value': '人物'}, {'Text': "Custom Text 人物 *'()&", 'value': 'Lulu 人 Ä'}]}
 
@@ -3225,12 +5349,12 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestKoboSync 12 - 12 - 0 - 0 + 6 + 5 + 1 0 Detail @@ -3275,29 +5399,92 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestKoboSync - test_kobo_sync_selected_shelfs
- PASS + +
+ FAIL +
+ + + + - +
TestKoboSync - test_shelves_add_remove_books
- PASS + +
+ FAIL +
+ + + + - +
TestKoboSync - test_sync_changed_book
- PASS + +
+ FAIL +
+ + + + @@ -3311,20 +5498,63 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestKoboSync - test_sync_reading_state
- PASS + +
+ ERROR +
+ + + + - +
TestKoboSync - test_sync_shelf
- PASS + +
+ FAIL +
+ + + + @@ -3338,22 +5568,43 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestKoboSync - test_sync_upload
- PASS + +
+ FAIL +
+ + + + - + TestKoboSyncBig 6 - 6 - 0 - 0 + 3 + 2 + 1 0 Detail @@ -3380,20 +5631,63 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestKoboSyncBig - test_kobo_sync_selected_shelves
- PASS + +
+ FAIL +
+ + + + - +
TestKoboSyncBig - test_sync_changed_book
- PASS + +
+ ERROR +
+ + + + @@ -3407,21 +5701,42 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestKoboSyncBig - test_sync_shelf
- PASS + +
+ FAIL +
+ + + + - + TestLdapLogin 13 - 13 - 0 + 10 + 3 0 0 @@ -3467,11 +5782,32 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLdapLogin - test_LDAP_import
- PASS + +
+ FAIL +
+ + + + @@ -3521,11 +5857,32 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLdapLogin - test_ldap_kobo_sync
- PASS + +
+ FAIL +
+ + + + @@ -3539,21 +5896,42 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLdapLogin - test_ldap_opds_download_book
- PASS + +
+ FAIL +
+ + + + - + TestLoadMetadata 1 - 1 0 + 1 0 0 @@ -3563,21 +5941,42 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLoadMetadata - test_load_metadata
- PASS + +
+ FAIL +
+ + + + - + TestLoadMetadataScholar 1 - 1 0 + 1 0 0 @@ -3587,21 +5986,42 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLoadMetadataScholar - test_load_metadata
- PASS + +
+ FAIL +
+ + + + - + TestLogging 9 - 8 - 0 + 7 + 1 0 1 @@ -3700,21 +6120,42 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLogging - test_logviewer
- PASS + +
+ FAIL +
+ + + + - + TestLogin 21 - 21 - 0 + 19 + 2 0 0 @@ -3769,11 +6210,32 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLogin - test_login_locale_select
- PASS + +
+ FAIL +
+ + + + @@ -3868,11 +6330,32 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestLogin - test_password_policy
- PASS + +
+ FAIL +
+ + + + @@ -4505,12 +6988,12 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestRegister 8 - 8 - 0 + 7 0 + 1 0 Detail @@ -4537,11 +7020,52 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestRegister - test_limit_domain
- PASS + +
+ ERROR +
+ + + + @@ -4715,12 +7239,12 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestSSL 7 - 7 - 0 + 1 0 + 6 0 Detail @@ -4729,20 +7253,64 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestSSL - test_SSL_None_setup_error
- PASS + +
+ ERROR +
+ + + + - +
TestSSL - test_SSL_STARTTLS_setup_error
- PASS + +
+ ERROR +
+ + + + @@ -4756,49 +7324,178 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestSSL - test_SSL_non_admin_user
- PASS + +
+ ERROR +
+ + + + - +
TestSSL - test_SSL_only
- PASS + +
+ ERROR +
+ + + + - +
TestSSL - test_email_limit
- PASS + +
+ ERROR +
+ + + + - +
TestSSL - test_filepicker_two_file
- PASS + +
+ ERROR +
+ + + + - + TestSTARTTLS 3 - 3 - 0 + 1 0 + 2 0 Detail @@ -4807,20 +7504,64 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestSTARTTLS - test_STARTTLS
- PASS + +
+ ERROR +
+ + + + - +
TestSTARTTLS - test_STARTTLS_SSL_setup_error
- PASS + +
+ ERROR +
+ + + + @@ -4835,13 +7576,13 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestSecurity 6 - 5 - 0 + 4 0 1 + 1 Detail @@ -4867,11 +7608,50 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestSecurity - test_password_strength
- PASS + +
+ ERROR +
+ + + + @@ -4928,13 +7708,13 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestShelf 17 - 16 - 0 + 15 0 1 + 1 Detail @@ -4960,11 +7740,38 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestShelf - test_adv_search_shelf
- PASS + +
+ ERROR +
+ + + + @@ -5629,11 +8436,11 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestUploadEPubs 7 - 7 - 0 + 6 + 1 0 0 @@ -5688,11 +8495,39 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestUploadEPubs - test_upload_epub_identifier
- PASS + +
+ FAIL +
+ + + + @@ -5731,12 +8566,12 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestUserList 19 - 19 - 0 - 0 + 15 + 2 + 2 0 Detail @@ -5754,11 +8589,32 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestUserList - test_list_visibility
- PASS + +
+ FAIL +
+ + + + @@ -5781,11 +8637,54 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestUserList - test_user_list_denied_tags
- PASS + +
+ ERROR +
+ + + + @@ -5835,11 +8734,33 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestUserList - test_user_list_edit_locale
- PASS + +
+ ERROR +
+ + + + @@ -5907,11 +8828,35 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestUserList - test_user_list_sort
- PASS + +
+ FAIL +
+ + + + @@ -5941,12 +8886,12 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - + TestUserTemplate 21 - 21 - 0 + 20 0 + 1 0 Detail @@ -6072,11 +9017,33 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're - +
TestUserTemplate - test_limit_book_languages
- PASS + +
+ ERROR +
+ + + + @@ -6146,10 +9113,10 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're Total - 554 - 542 - 1 - 0 + 555 + 443 + 50 + 51 11   @@ -6184,7 +9151,7 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're Python - 3.12.3 (main, Jun 19 2026, 12:46:00) [GCC 13.3.0] + 3.12.3 (main, Aug 31 2026, 10:18:26) [GCC 13.3.0] @@ -6364,7 +9331,7 @@ AssertionError: 'series' unexpectedly found in {'id': 5, 're