improved session handling

pull/1813/head
Ozzie Isaacs 3 years ago
parent 263a8f9048
commit e5f754ed0e

@ -545,7 +545,7 @@ class CalibreDB():
backref='books'))
cls.session_factory = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
autoflush=True,
bind=cls.engine))
for inst in cls.instances:
inst.initSession()

@ -31,7 +31,7 @@ from flask import Blueprint, request, flash, redirect, url_for, abort, Markup, R
from flask_babel import gettext as _
from flask_login import current_user, login_required
from sqlalchemy.exc import OperationalError, IntegrityError
from sqlite3 import OperationalError as sqliteOperationalError
from . import constants, logger, isoLanguages, gdriveutils, uploader, helper
from . import config, get_locale, ub, db
from . import calibre_db
@ -310,7 +310,6 @@ def delete_book(book_id, book_format, jsonResponse):
def render_edit_book(book_id):
calibre_db.update_title_sort(config)
cc = calibre_db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
book = calibre_db.get_filtered_book(book_id, allow_show_archived=True)
if not book:
@ -607,12 +606,19 @@ def upload_cover(request, book):
@edit_required
def edit_book(book_id):
modif_date = False
# create the function for sorting...
try:
calibre_db.update_title_sort(config)
except sqliteOperationalError as e:
log.debug_or_exception(e)
calibre_db.session.rollback()
# Show form
if request.method != 'POST':
return render_edit_book(book_id)
# create the function for sorting...
calibre_db.update_title_sort(config)
book = calibre_db.get_filtered_book(book_id, allow_show_archived=True)
# Book not found

@ -123,7 +123,6 @@ class TaskConvert(CalibreTask):
book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext))
try:
local_db.session.merge(new_format)
local_db.session.flush()
local_db.session.commit()
except SQLAlchemyError as e:
local_db.session.rollback()

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save