mirror of
https://github.com/janeczku/calibre-web
synced 2025-10-23 11:27:41 +00:00
Fix missing session rollback on commit error
This commit is contained in:
56
cps/web.py
56
cps/web.py
@@ -434,7 +434,10 @@ def bookmark(book_id, book_format):
|
||||
ub.Bookmark.book_id == book_id,
|
||||
ub.Bookmark.format == book_format)).delete()
|
||||
if not bookmark_key:
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
return "", 204
|
||||
|
||||
lbookmark = ub.Bookmark(user_id=current_user.id,
|
||||
@@ -442,7 +445,10 @@ def bookmark(book_id, book_format):
|
||||
format=book_format,
|
||||
bookmark_key=bookmark_key)
|
||||
g.ubsession.merge(lbookmark)
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
return "", 201
|
||||
|
||||
|
||||
@@ -467,7 +473,10 @@ def toggle_read(book_id):
|
||||
kobo_reading_state.statistics = ub.KoboStatistics()
|
||||
book.kobo_reading_state = kobo_reading_state
|
||||
g.ubsession.merge(book)
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
else:
|
||||
try:
|
||||
calibre_db.update_title_sort(config)
|
||||
@@ -501,7 +510,10 @@ def toggle_archived(book_id):
|
||||
archived_book = ub.ArchivedBook(user_id=current_user.id, book_id=book_id)
|
||||
archived_book.is_archived = True
|
||||
g.ubsession.merge(archived_book)
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
return ""
|
||||
|
||||
|
||||
@@ -1086,11 +1098,12 @@ def update_table_settings():
|
||||
except AttributeError:
|
||||
pass
|
||||
g.ubsession.commit()
|
||||
except InvalidRequestError:
|
||||
except (InvalidRequestError, OperationalError):
|
||||
log.error("Invalid request received: %r ", request, )
|
||||
return "Invalid request", 400
|
||||
return ""
|
||||
|
||||
|
||||
@web.route("/author")
|
||||
@login_required_if_no_ano
|
||||
def author_list():
|
||||
@@ -1676,7 +1689,10 @@ def logout():
|
||||
def remote_login():
|
||||
auth_token = ub.RemoteAuthToken()
|
||||
g.ubsession.add(auth_token)
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
|
||||
verify_url = url_for('web.verify_token', token=auth_token.auth_token, _external=true)
|
||||
log.debug(u"Remot Login request with token: %s", auth_token.auth_token)
|
||||
@@ -1708,7 +1724,10 @@ def verify_token(token):
|
||||
# Update token with user information
|
||||
auth_token.user_id = current_user.id
|
||||
auth_token.verified = True
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
|
||||
flash(_(u"Success! Please return to your device"), category="success")
|
||||
log.debug(u"Remote Login token for userid %s verified", auth_token.user_id)
|
||||
@@ -1731,7 +1750,10 @@ def token_verified():
|
||||
# Token expired
|
||||
elif datetime.now() > auth_token.expiration:
|
||||
g.ubsession.delete(auth_token)
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
|
||||
data['status'] = 'error'
|
||||
data['message'] = _(u"Token has expired")
|
||||
@@ -1744,7 +1766,10 @@ def token_verified():
|
||||
login_user(user)
|
||||
|
||||
g.ubsession.delete(auth_token)
|
||||
g.ubsession.commit()
|
||||
try:
|
||||
g.ubsession.commit()
|
||||
except OperationalError:
|
||||
g.ubsession.rollback()
|
||||
|
||||
data['status'] = 'success'
|
||||
log.debug(u"Remote Login for userid %s succeded", user.id)
|
||||
@@ -1836,14 +1861,11 @@ def profile():
|
||||
g.ubsession.rollback()
|
||||
flash(_(u"Found an existing account for this e-mail address."), category="error")
|
||||
log.debug(u"Found an existing account for this e-mail address.")
|
||||
'''return render_title_template("user_edit.html",
|
||||
content=current_user,
|
||||
translations=translations,
|
||||
kobo_support=kobo_support,
|
||||
title=_(u"%(name)s's profile", name=current_user.nickname),
|
||||
page="me",
|
||||
registered_oauth=local_oauth_check,
|
||||
oauth_status=oauth_status)'''
|
||||
except OperationalError as e:
|
||||
g.ubsession.rollback()
|
||||
log.error("Database error: %s", e)
|
||||
flash(_(u"Database error: %(error)s.", error=e), category="error")
|
||||
|
||||
return render_title_template("user_edit.html",
|
||||
translations=translations,
|
||||
profile=1,
|
||||
|
Reference in New Issue
Block a user