diff --git a/cps/editbooks.py b/cps/editbooks.py
old mode 100644
new mode 100755
index b6fdc164..e20cfcfb
--- a/cps/editbooks.py
+++ b/cps/editbooks.py
@@ -357,7 +357,16 @@ def delete_book_from_table(book_id, book_format, jsonResponse):
else:
# book not found
log.error('Book with id "%s" could not be deleted: not found', book_id)
- return render_delete_book_result(book_format, jsonResponse, warning, book_id)
+ return render_delete_book_result(book_format, jsonResponse, warning, book_id)
+ message = _("You are missing permissions to delete books")
+ if jsonResponse:
+ return json.dumps({"location": url_for("editbook.edit_book", book_id=book_id),
+ "type": "danger",
+ "format": "",
+ "message": message})
+ else:
+ flash(message, category="error")
+ return redirect(url_for('editbook.edit_book', book_id=book_id))
def render_edit_book(book_id):
diff --git a/cps/static/js/main.js b/cps/static/js/main.js
old mode 100644
new mode 100755
index e8da76ef..cf5a4327
--- a/cps/static/js/main.js
+++ b/cps/static/js/main.js
@@ -198,7 +198,7 @@ function confirmDialog(id, dialogid, dataValue, yesFn, noFn) {
$confirm.modal('show');
}
-$("#delete_confirm").click(function() {
+$("#delete_confirm").click(function(event) {
//get data-id attribute of the clicked element
var deleteId = $(this).data("delete-id");
var bookFormat = $(this).data("delete-format");
@@ -228,8 +228,7 @@ $("#delete_confirm").click(function() {
}
});
} else {
- window.location.href = getPath() + "/delete/" + deleteId;
-
+ postButton(event, getPath() + "/delete/" + deleteId);
}
}
diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html
index d291d368..511300be 100644
--- a/test/Calibre-Web TestSummary_Linux.html
+++ b/test/Calibre-Web TestSummary_Linux.html
@@ -37,20 +37,20 @@
-
Start Time: 2021-12-22 20:24:40
+
Start Time: 2022-01-02 17:11:15
-
Stop Time: 2021-12-23 00:00:41
+
Stop Time: 2022-01-02 21:33:59
-
Duration: 2h 57 min
+
Duration: 3h 43 min
@@ -411,21 +411,50 @@
-
+
TestEbookConvertCalibre |
+ 15 |
14 |
- 14 |
- 0 |
+ 1 |
0 |
0 |
- Detail
+ Detail
|
-
+
+
+ TestEbookConvertCalibre - test_calibre_log
+ |
+
+
+
+
+
+
+
+ |
+
+
+
+
+
TestEbookConvertCalibre - test_convert_deactivate
|
@@ -434,7 +463,7 @@
-
+
TestEbookConvertCalibre - test_convert_email
|
@@ -443,7 +472,7 @@
-
+
TestEbookConvertCalibre - test_convert_failed_and_email
|
@@ -452,7 +481,7 @@
-
+
TestEbookConvertCalibre - test_convert_only
|
@@ -461,7 +490,7 @@
-
+
TestEbookConvertCalibre - test_convert_options
|
@@ -470,7 +499,7 @@
-
+
TestEbookConvertCalibre - test_convert_parameter
|
@@ -479,7 +508,7 @@
-
+
TestEbookConvertCalibre - test_convert_wrong_excecutable
|
@@ -488,7 +517,7 @@
-
+
TestEbookConvertCalibre - test_convert_xss
|
@@ -497,7 +526,7 @@
-
+
TestEbookConvertCalibre - test_email_failed
|
@@ -506,7 +535,7 @@
-
+
TestEbookConvertCalibre - test_email_only
|
@@ -515,7 +544,7 @@
-
+
TestEbookConvertCalibre - test_kindle_send_not_configured
|
@@ -524,7 +553,7 @@
-
+
TestEbookConvertCalibre - test_ssl_smtp_setup_error
|
@@ -533,7 +562,7 @@
-
+
TestEbookConvertCalibre - test_starttls_smtp_setup_error
|
@@ -542,7 +571,7 @@
-
+
TestEbookConvertCalibre - test_user_convert_xss
|
@@ -782,11 +811,31 @@
-
+
TestEditAdditionalBooks - test_title_sort
|
- PASS |
+
+
+
+
+
+
+
+ |
@@ -844,31 +893,11 @@
-
+
TestEditAdditionalBooks - test_writeonly_path
|
-
-
-
-
-
-
-
- |
+ PASS |
@@ -901,11 +930,11 @@ AssertionError: False is not true
-
+
TestEditBooks |
35 |
- 32 |
- 2 |
+ 34 |
+ 0 |
0 |
1 |
@@ -924,31 +953,11 @@ AssertionError: False is not true
- |
+
TestEditBooks - test_edit_author
|
-
-
-
-
-
-
-
- |
+ PASS |
@@ -1097,31 +1106,11 @@ AssertionError: False is not true
-
+
TestEditBooks - test_edit_title
|
-
-
-
-
-
-
-
- |
+ PASS |
@@ -1466,48 +1455,39 @@ AssertionError: False is not true
- TestEditBooksOnGdrive |
- 20 |
- 18 |
- 2 |
+ TestEditMetadata |
+ 1 |
+ 0 |
+ 1 |
0 |
0 |
- Detail
+ Detail
|
-
-
- TestEditBooksOnGdrive - test_download_book
- |
- PASS |
-
-
-
-
-
+
- TestEditBooksOnGdrive - test_edit_author
+ TestEditMetadata - test_upload_book_lit
|
-
+
- |
+
+
+
+ TestEditBooksOnGdrive |
+ 20 |
+ 20 |
+ 0 |
+ 0 |
+ 0 |
+
+ Detail
+ |
+
+
+
-
+
+
+ TestEditBooksOnGdrive - test_download_book
+ |
+ PASS |
+
+
+
+
+
+
+ TestEditBooksOnGdrive - test_edit_author
+ |
+ PASS |
+
+
+
+
+
TestEditBooksOnGdrive - test_edit_category
|
@@ -1526,7 +1539,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_comments
|
@@ -1535,7 +1548,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_bool
|
@@ -1544,7 +1557,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_categories
|
@@ -1553,7 +1566,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_float
|
@@ -1562,7 +1575,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_int
|
@@ -1571,7 +1584,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_rating
|
@@ -1580,7 +1593,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_single_select
|
@@ -1589,7 +1602,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_custom_text
|
@@ -1598,7 +1611,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_language
|
@@ -1607,7 +1620,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_publisher
|
@@ -1616,7 +1629,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_rating
|
@@ -1625,7 +1638,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_series
|
@@ -1634,36 +1647,16 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_edit_title
|
-
-
-
-
-
-
-
- |
+ PASS |
-
+
TestEditBooksOnGdrive - test_upload_book_epub
|
@@ -1672,7 +1665,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_upload_book_lit
|
@@ -1681,7 +1674,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_upload_cover_hdd
|
@@ -1690,7 +1683,7 @@ AssertionError: False is not true
-
+
TestEditBooksOnGdrive - test_watch_metadata
|
@@ -1708,13 +1701,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestSTARTTLS - test_STARTTLS
|
@@ -1723,7 +1716,7 @@ AssertionError: False is not true
-
+
TestSTARTTLS - test_STARTTLS_SSL_setup_error
|
@@ -1732,7 +1725,7 @@ AssertionError: False is not true
-
+
TestSTARTTLS - test_STARTTLS_resend_password
|
@@ -1750,13 +1743,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestSSL - test_SSL_None_setup_error
|
@@ -1765,7 +1758,7 @@ AssertionError: False is not true
-
+
TestSSL - test_SSL_STARTTLS_setup_error
|
@@ -1774,7 +1767,7 @@ AssertionError: False is not true
-
+
TestSSL - test_SSL_logging_email
|
@@ -1783,7 +1776,7 @@ AssertionError: False is not true
-
+
TestSSL - test_SSL_non_admin_user
|
@@ -1792,7 +1785,7 @@ AssertionError: False is not true
-
+
TestSSL - test_SSL_only
|
@@ -1801,7 +1794,7 @@ AssertionError: False is not true
-
+
TestSSL - test_email_limit
|
@@ -1810,7 +1803,7 @@ AssertionError: False is not true
-
+
TestSSL - test_filepicker_two_file
|
@@ -1828,13 +1821,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestBookDatabase - test_invalid_book_path
|
@@ -1852,13 +1845,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestErrorReadColumn - test_invalid_custom_column
|
@@ -1876,13 +1869,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestFilePicker - test_filepicker_limited_file
|
@@ -1900,13 +1893,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestSetupGdrive - test_config_gdrive
|
@@ -1924,13 +1917,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestGoodreads - test_author_page
|
@@ -1939,7 +1932,7 @@ AssertionError: False is not true
-
+
TestGoodreads - test_author_page_invalid
|
@@ -1948,7 +1941,7 @@ AssertionError: False is not true
-
+
TestGoodreads - test_goodreads_about
|
@@ -1966,13 +1959,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestKoboSync - test_book_download
|
@@ -1981,7 +1974,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_kobo_about
|
@@ -1990,7 +1983,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_kobo_sync_selected_shelfs
|
@@ -1999,7 +1992,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_kobo_upload_book
|
@@ -2008,7 +2001,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_shelves_add_remove_books
|
@@ -2017,7 +2010,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_sync_changed_book
|
@@ -2026,7 +2019,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_sync_invalid
|
@@ -2035,7 +2028,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_sync_reading_state
|
@@ -2044,7 +2037,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_sync_shelf
|
@@ -2053,7 +2046,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_sync_unchanged
|
@@ -2062,7 +2055,7 @@ AssertionError: False is not true
-
+
TestKoboSync - test_sync_upload
|
@@ -2080,13 +2073,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestKoboSyncBig - test_kobo_sync_multi_user
|
@@ -2095,7 +2088,7 @@ AssertionError: False is not true
-
+
TestKoboSyncBig - test_kobo_sync_selected_shelfs
|
@@ -2104,7 +2097,7 @@ AssertionError: False is not true
-
+
TestKoboSyncBig - test_sync_changed_book
|
@@ -2113,7 +2106,7 @@ AssertionError: False is not true
-
+
TestKoboSyncBig - test_sync_reading_state
|
@@ -2122,7 +2115,7 @@ AssertionError: False is not true
-
+
TestKoboSyncBig - test_sync_shelf
|
@@ -2140,13 +2133,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestLdapLogin - test_LDAP_SSL
|
@@ -2155,7 +2148,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_LDAP_SSL_CERTIFICATE
|
@@ -2164,7 +2157,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_LDAP_STARTTLS
|
@@ -2173,7 +2166,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_LDAP_fallback_Login
|
@@ -2182,7 +2175,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_LDAP_import
|
@@ -2191,7 +2184,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_LDAP_import_memberfield
|
@@ -2200,7 +2193,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_LDAP_login
|
@@ -2209,7 +2202,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_invalid_LDAP
|
@@ -2218,7 +2211,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_ldap_about
|
@@ -2227,7 +2220,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_ldap_authentication
|
@@ -2236,7 +2229,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_ldap_kobo_sync
|
@@ -2245,7 +2238,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_ldap_opds_anonymous
|
@@ -2254,7 +2247,7 @@ AssertionError: False is not true
-
+
TestLdapLogin - test_ldap_opds_download_book
|
@@ -2272,13 +2265,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestCalibreWebListOrders - test_author_sort
|
@@ -2287,7 +2280,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_download_sort
|
@@ -2296,7 +2289,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_format_sort
|
@@ -2305,7 +2298,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_lang_sort
|
@@ -2314,7 +2307,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_publisher_sort
|
@@ -2323,7 +2316,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_ratings_sort
|
@@ -2332,7 +2325,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_series_sort
|
@@ -2341,7 +2334,7 @@ AssertionError: False is not true
-
+
TestCalibreWebListOrders - test_tags_sort
|
@@ -2359,13 +2352,13 @@ AssertionError: False is not true
0 |
1 |
- Detail
+ Detail
|
-
+
TestLogging - test_access_log_recover
|
@@ -2374,7 +2367,7 @@ AssertionError: False is not true
-
+
TestLogging - test_debug_log
|
@@ -2383,7 +2376,7 @@ AssertionError: False is not true
-
+
TestLogging - test_debuginfo_download
|
@@ -2392,7 +2385,7 @@ AssertionError: False is not true
-
+
TestLogging - test_failed_login
|
@@ -2401,19 +2394,19 @@ AssertionError: False is not true
-
+
TestLogging - test_failed_register
|
-
+
- |
-
+
TestOAuthLogin - test_oauth_about
|
@@ -2670,7 +2663,7 @@ AssertionError: False is not true
-
+
TestOAuthLogin - test_visible_oauth
|
@@ -2688,13 +2681,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestOPDSFeed - test_opds
|
@@ -2703,7 +2696,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_author
|
@@ -2712,7 +2705,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_books
|
@@ -2721,7 +2714,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_calibre_companion
|
@@ -2730,7 +2723,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_colon_password
|
@@ -2739,7 +2732,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_cover
|
@@ -2748,7 +2741,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_download_book
|
@@ -2757,7 +2750,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_formats
|
@@ -2766,7 +2759,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_guest_user
|
@@ -2775,7 +2768,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_hot
|
@@ -2784,7 +2777,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_language
|
@@ -2793,7 +2786,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_non_admin
|
@@ -2802,7 +2795,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_publisher
|
@@ -2811,7 +2804,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_random
|
@@ -2820,7 +2813,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_ratings
|
@@ -2829,7 +2822,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_read_unread
|
@@ -2838,7 +2831,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_search
|
@@ -2847,7 +2840,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_series
|
@@ -2856,7 +2849,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_shelf_access
|
@@ -2865,7 +2858,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_tags
|
@@ -2874,7 +2867,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_top_rated
|
@@ -2883,7 +2876,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_opds_unicode_user
|
@@ -2892,7 +2885,7 @@ AssertionError: False is not true
-
+
TestOPDSFeed - test_recently_added
|
@@ -2910,13 +2903,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestUploadPDF - test_upload_invalid_pdf
|
@@ -2934,13 +2927,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestReader - test_comic_reader
|
@@ -2949,7 +2942,7 @@ AssertionError: False is not true
-
+
TestReader - test_epub_reader
|
@@ -2958,7 +2951,7 @@ AssertionError: False is not true
-
+
TestReader - test_pdf_reader
|
@@ -2967,7 +2960,7 @@ AssertionError: False is not true
-
+
TestReader - test_sound_listener
|
@@ -2976,7 +2969,7 @@ AssertionError: False is not true
-
+
TestReader - test_txt_reader
|
@@ -2994,13 +2987,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestRegister - test_forgot_password
|
@@ -3009,7 +3002,7 @@ AssertionError: False is not true
-
+
TestRegister - test_illegal_email
|
@@ -3018,7 +3011,7 @@ AssertionError: False is not true
-
+
TestRegister - test_limit_domain
|
@@ -3027,7 +3020,7 @@ AssertionError: False is not true
-
+
TestRegister - test_register_no_server
|
@@ -3036,7 +3029,7 @@ AssertionError: False is not true
-
+
TestRegister - test_registering_only_email
|
@@ -3045,7 +3038,7 @@ AssertionError: False is not true
-
+
TestRegister - test_registering_user
|
@@ -3054,7 +3047,7 @@ AssertionError: False is not true
-
+
TestRegister - test_registering_user_fail
|
@@ -3063,7 +3056,7 @@ AssertionError: False is not true
-
+
TestRegister - test_user_change_password
|
@@ -3081,13 +3074,13 @@ AssertionError: False is not true
0 |
0 |
- Detail
+ Detail
|
-
+
TestReverseProxy - test_logout
|
@@ -3096,7 +3089,7 @@ AssertionError: False is not true
-
+
TestReverseProxy - test_move_page
|
@@ -3105,7 +3098,7 @@ AssertionError: False is not true
-
+
TestReverseProxy - test_reverse_about
|
@@ -3123,13 +3116,13 @@ AssertionError: False is not true
0 |
1 |
- Detail
+ Detail
|
-
+
TestShelf - test_add_shelf_from_search
|
@@ -3138,7 +3131,7 @@ AssertionError: False is not true
-
+
TestShelf - test_adv_search_shelf
|
@@ -3147,7 +3140,7 @@ AssertionError: False is not true
-
+
TestShelf - test_arrange_shelf
|
@@ -3156,7 +3149,7 @@ AssertionError: False is not true
-
+
TestShelf - test_create_public_shelf
|
@@ -3165,7 +3158,7 @@ AssertionError: False is not true
-
+
TestShelf - test_delete_book_of_shelf
|
@@ -3174,7 +3167,7 @@ AssertionError: False is not true
-
+
TestShelf - test_private_shelf
|
@@ -3183,7 +3176,7 @@ AssertionError: False is not true
-
+
TestShelf - test_public_private_shelf
|
@@ -3192,7 +3185,7 @@ AssertionError: False is not true
-
+
TestShelf - test_public_shelf
|
@@ -3201,7 +3194,7 @@ AssertionError: False is not true
-
+
TestShelf - test_rename_shelf
|
@@ -3210,7 +3203,7 @@ AssertionError: False is not true
-
+
TestShelf - test_shelf_action_non_shelf_edit_role
|
@@ -3219,7 +3212,7 @@ AssertionError: False is not true
-
+
TestShelf - test_shelf_anonymous
|
@@ -3228,19 +3221,19 @@ AssertionError: False is not true
-
+
TestShelf - test_shelf_database_change
|
-
+
- |