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:
		
							parent
							
								
									00acd745f4
								
							
						
					
					
						commit
						977f07364b
					
				| 
						 | 
					@ -27,8 +27,10 @@ from shutil import copyfile
 | 
				
			||||||
from uuid import uuid4
 | 
					from uuid import uuid4
 | 
				
			||||||
from markupsafe import escape, Markup  # dependency of flask
 | 
					from markupsafe import escape, Markup  # dependency of flask
 | 
				
			||||||
from functools import wraps
 | 
					from functools import wraps
 | 
				
			||||||
 | 
					from lxml.etree import ParserError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
 | 
					    # at least bleach 6.0 is needed -> incomplatible change from list arguments to set arguments
 | 
				
			||||||
    from bleach import clean_text as clean_html
 | 
					    from bleach import clean_text as clean_html
 | 
				
			||||||
    BLEACH = True
 | 
					    BLEACH = True
 | 
				
			||||||
except ImportError:
 | 
					except ImportError:
 | 
				
			||||||
| 
						 | 
					@ -1001,10 +1003,14 @@ def edit_book_series_index(series_index, book):
 | 
				
			||||||
def edit_book_comments(comments, book):
 | 
					def edit_book_comments(comments, book):
 | 
				
			||||||
    modify_date = False
 | 
					    modify_date = False
 | 
				
			||||||
    if comments:
 | 
					    if comments:
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
            if BLEACH:
 | 
					            if BLEACH:
 | 
				
			||||||
            comments = clean_html(comments, tags=None, attributes=None)
 | 
					                comments = clean_html(comments, tags=set(), attributes=set())
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                comments = clean_html(comments)
 | 
					                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 len(book.comments):
 | 
				
			||||||
        if book.comments[0].text != comments:
 | 
					        if book.comments[0].text != comments:
 | 
				
			||||||
            book.comments[0].text = comments
 | 
					            book.comments[0].text = comments
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,7 +102,7 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
 | 
				
			||||||
            elif s == 'date':
 | 
					            elif s == 'date':
 | 
				
			||||||
                epub_metadata[s] = tmp[0][:10]
 | 
					                epub_metadata[s] = tmp[0][:10]
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                epub_metadata[s] = tmp[0]
 | 
					                epub_metadata[s] = tmp[0].strip()
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            epub_metadata[s] = 'Unknown'
 | 
					            epub_metadata[s] = 'Unknown'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -140,7 +140,7 @@ def convert_to_kobo_timestamp_string(timestamp):
 | 
				
			||||||
# @download_required
 | 
					# @download_required
 | 
				
			||||||
def HandleSyncRequest():
 | 
					def HandleSyncRequest():
 | 
				
			||||||
    if not current_user.role_download():
 | 
					    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)
 | 
					        return abort(403)
 | 
				
			||||||
    sync_token = SyncToken.SyncToken.from_headers(request.headers)
 | 
					    sync_token = SyncToken.SyncToken.from_headers(request.headers)
 | 
				
			||||||
    log.info("Kobo library sync request received")
 | 
					    log.info("Kobo library sync request received")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user