Fix for #2961 (empty comment with newline causes error 500 on upload)

Language of error message for kobo sync improved
This commit is contained in:
Ozzie Isaacs 2023-12-31 19:48:47 +01:00
parent 00acd745f4
commit 977f07364b
3 changed files with 12 additions and 6 deletions

View file

@ -27,8 +27,10 @@ from shutil import copyfile
from uuid import uuid4
from markupsafe import escape, Markup # dependency of flask
from functools import wraps
from lxml.etree import ParserError
try:
# at least bleach 6.0 is needed -> incomplatible change from list arguments to set arguments
from bleach import clean_text as clean_html
BLEACH = True
except ImportError:
@ -1001,10 +1003,14 @@ def edit_book_series_index(series_index, book):
def edit_book_comments(comments, book):
modify_date = False
if comments:
if BLEACH:
comments = clean_html(comments, tags=None, attributes=None)
else:
comments = clean_html(comments)
try:
if BLEACH:
comments = clean_html(comments, tags=set(), attributes=set())
else:
comments = clean_html(comments)
except ParserError as e:
log.error("Comments of book {} are corrupted: {}".format(book.id, e))
comments = ""
if len(book.comments):
if book.comments[0].text != comments:
book.comments[0].text = comments

View file

@ -102,7 +102,7 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
elif s == 'date':
epub_metadata[s] = tmp[0][:10]
else:
epub_metadata[s] = tmp[0]
epub_metadata[s] = tmp[0].strip()
else:
epub_metadata[s] = 'Unknown'

View file

@ -140,7 +140,7 @@ def convert_to_kobo_timestamp_string(timestamp):
# @download_required
def HandleSyncRequest():
if not current_user.role_download():
log.info("User needs download permissions for syncing library with Kobo")
log.info("Users need download permissions for syncing library to Kobo reader")
return abort(403)
sync_token = SyncToken.SyncToken.from_headers(request.headers)
log.info("Kobo library sync request received")