diff --git a/cps/editbooks.py b/cps/editbooks.py index 2fe40f3c..ca25b95e 100644 --- a/cps/editbooks.py +++ b/cps/editbooks.py @@ -215,7 +215,11 @@ def table_get_custom_enum(c_id): @edit_required def edit_list_book(param): vals = request.get_json() - return jsonify(edit_book_param(param, vals)) + ret_value = edit_book_param(param, vals) + if isinstance(ret_value, dict): + return jsonify(ret_value) + else: + return ret_value @editbook.route("/ajax/editselectedbooks", methods=['POST']) @login_required_if_no_ano @@ -233,6 +237,9 @@ def edit_selected_books(): publishers = d.get('publishers') comments = d.get('comments') + if not ( + title or title_sort or authors or categories or series or languages or publishers or comments) or not selections: + return _("Parameter not found"), 400 vals = { "pk": selections, "value": None, @@ -307,7 +314,7 @@ def edit_book_param(param, vals, multi=False): elements = vals.get('pk',[]) if vals.get('value', None) is None: return {'success':False, 'msg':_("Value is missing on request")} - if not elements : + if not elements or len(elements) > 1 and multi == False: return {"success":False, "msg":_("Oops! Selected book is unavailable. File does not exist or is not accessible")} ret = {} out = list() @@ -318,7 +325,9 @@ def edit_book_param(param, vals, multi=False): "msg": _("Oops! Selected book is unavailable. File does not exist or is not accessible")} if multi: out.append(ret) - continue + continue + else: + return ret calibre_db.create_functions(config) sort_param = "" try: diff --git a/cps/helper.py b/cps/helper.py index bbfc8268..ba56f506 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -960,9 +960,8 @@ def do_download_file(book, book_format, client, data, headers): # ToDo Check headers parameter for element in headers: response.headers[element[0]] = element[1] - log.info('Downloading file: \'%s\' by %s', format(os.path.join(filename, book_name + "." + book_format)), + log.info('Downloading file: \'%s\' by %s - %s', format(os.path.join(filename, book_name + "." + book_format)), current_user.name, request.headers.get('X-Forwarded-For', request.remote_addr)) - log.info('Downloading file: {}'.format(os.path.join(filename, book_name + "." + book_format))) return response diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index dad550db..386fcd1a 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
Start Time: 2024-12-15 07:24:54
+Start Time: 2025-01-03 19:44:59
Stop Time: 2024-12-15 14:36:53
+Stop Time: 2025-01-04 03:03:26
Duration: 6h 5 min
+Duration: 6h 12 min
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_backup_metadata.py", line 500, in test_backup_change_custom_text - self.assertEqual(custom["#value#"], "人物 *'(}\"") -AssertionError: None != '人物 *\'(}"'-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 502, in test_booklist_xss - self.assertEqual("", response.json()['newValue']) -KeyError: 'newValue'-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 202, in test_bookslist_edit_categories - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 482, in test_bookslist_edit_comment - self.assertEqual("+", bl['table'][4]["Comments"]['text']) -AssertionError: '+' != '[...]\nEnter comments\n Normal text \nBol[45 chars]uest' -- + -+ [...] -Enter comments - Normal text -Bold -Italic -Underline -Value is missing on request-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 394, in test_bookslist_edit_cust_category - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 467, in test_bookslist_edit_cust_comment - self.assertEqual("+", bl['table'][4]["Custom Comment 人物"]['text']) -AssertionError: '+' != '[...]\nEnter Custom Comment 人物\n Normal t[54 chars]uest' -- + -+ [...] -Enter Custom Comment 人物 - Normal text -Bold -Italic -Underline -Value is missing on request-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 408, in test_bookslist_edit_cust_enum - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 363, in test_bookslist_edit_cust_float - self.assertEqual("3.55", values['cust_columns'][0]['value']) -AssertionError: '3.55' != 'Test1234' -- 3.55 -+ Test1234-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 351, in test_bookslist_edit_cust_int - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 423, in test_bookslist_edit_cust_ratings - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 435, in test_bookslist_edit_cust_text - self.assertEqual("执 Huks", values['cust_columns'][0]['value']) -AssertionError: '执 Huks' != '3.5' -- 执 Huks -+ 3.5-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 276, in test_bookslist_edit_languages - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 245, in test_bookslist_edit_publisher - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_list.py", line 224, in test_bookslist_edit_series - bl = self.get_books_list(-1) - File "/home/ozzie/Development/calibre-web-test/test/helper_ui.py", line 1928, in get_books_list - element_text = "+" if "glyphicon-plus" in click_element.find_elements(By.XPATH, "./span")[0].get_attribute('class') else "" -IndexError: list index out of range-
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 != 5-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_metadata.py", line 220, in test_load_metadata - self.assertLessEqual(diff(BytesIO(cover), BytesIO(new_cover), delete_diff_file=True), 0.02) -AssertionError: 0.02499824076612272 not less than or equal to 0.02+ File "/home/ozzie/Development/calibre-web-test/test/test_edit_books_metadata.py", line 268, in test_load_metadata + self.assertEqual(1, found) +AssertionError: 1 != 0
ImportError: Failed to import test module: test_mass_edit_books_list -Traceback (most recent call last): - File "/usr/lib/python3.10/unittest/loader.py", line 436, in _find_test_path - module = self._get_module_from_name(name) - File "/usr/lib/python3.10/unittest/loader.py", line 377, in _get_module_from_name - __import__(name) - File "/home/ozzie/Development/calibre-web-test/test/test_mass_edit_books_list.py", line 172 - Title, autor write protect single edit - ^^^^^ -SyntaxError: invalid syntax+
Traceback (most recent call last): + File "/home/ozzie/Development/calibre-web-test/test/test_mass_edit_books_list.py", line 241, in test_invalid_author_title + self.assertEqual(bl['table'][2]['Title']['text'], "book11") +AssertionError: 'book9' != 'book11' +- book9 +? ^ ++ book11 +? ^^
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_reader.py", line 98, in test_kepub_reader - if but.accessible_name == "kepub": - File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py", line 311, in accessible_name - return self._execute(Command.GET_ELEMENT_ARIA_LABEL)["value"] - File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py", line 403, in _execute - return self._parent.execute(command, params) - File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute - self.error_handler.check_response(response) - File "/home/ozzie/Development/calibre-web-test/venv/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 209, in check_response - raise exception_class(value) -selenium.common.exceptions.WebDriverException: Message: HTTP method not allowed-
Traceback (most recent call last): - File "/home/ozzie/Development/calibre-web-test/test/test_thumbnails.py", line 317, in test_sideloaded_book - self.assertAlmostEqual(diff(BytesIO(list_cover), BytesIO(old_list_cover), delete_diff_file=True), 0.0, -AssertionError: 0.005603393130301767 != 0.0 within 0.0001 delta (0.005603393130301767 difference)-