Fixes for flask version 2.1

Fixes for compatibility with sqlalchemy 2.0
This commit is contained in:
Ozzie Isaacs 2021-06-05 18:41:42 +02:00
parent d9f86aecd2
commit 93e8c5be32
4 changed files with 25 additions and 12 deletions

View File

@ -584,7 +584,7 @@ class CalibreDB():
if not cc_classes:
try:
cc = conn.execute("SELECT id, datatype FROM custom_columns")
cc = conn.execute(text("SELECT id, datatype FROM custom_columns"))
cls.setup_db_cc_classes(cc)
except OperationalError as e:
log.debug_or_exception(e)

View File

@ -29,7 +29,7 @@ except ImportError:
import os
from flask import send_file
from flask import send_file, __version__
from . import logger, config
from .about import collect_stats
@ -43,9 +43,15 @@ def assemble_logfiles(file_name):
with open(f, 'r') as fd:
shutil.copyfileobj(fd, wfd)
wfd.seek(0)
return send_file(wfd,
as_attachment=True,
attachment_filename=os.path.basename(file_name))
if int(__version__.split('.')[0]) < 2:
return send_file(wfd,
as_attachment=True,
attachment_filename=os.path.basename(file_name))
else:
return send_file(wfd,
as_attachment=True,
download_name=os.path.basename(file_name))
def send_debug():
file_list = glob.glob(logger.get_logfile(config.config_logfile) + '*')
@ -60,6 +66,11 @@ def send_debug():
for fp in file_list:
zf.write(fp, os.path.basename(fp))
memory_zip.seek(0)
return send_file(memory_zip,
as_attachment=True,
attachment_filename="Calibre-Web-debug-pack.zip")
if int(__version__.split('.')[0]) < 2:
return send_file(memory_zip,
as_attachment=True,
attachment_filename="Calibre-Web-debug-pack.zip")
else:
return send_file(memory_zip,
as_attachment=True,
download_name="Calibre-Web-debug-pack.zip")

View File

@ -34,6 +34,7 @@ try:
except ImportError:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.exc import OperationalError, InvalidRequestError
from sqlalchemy.sql.expression import text
try:
from apiclient import errors
@ -168,7 +169,7 @@ class PermissionAdded(Base):
def migrate():
if not engine.dialect.has_table(engine.connect(), "permissions_added"):
PermissionAdded.__table__.create(bind = engine)
for sql in session.execute("select sql from sqlite_master where type='table'"):
for sql in session.execute(text("select sql from sqlite_master where type='table'")):
if 'CREATE TABLE gdrive_ids' in sql[0]:
currUniqueConstraint = 'UNIQUE (gdrive_id)'
if currUniqueConstraint in sql[0]:

View File

@ -485,11 +485,12 @@ def migrate_registration_table(engine, session):
# Remove login capability of user Guest
def migrate_guest_password(engine, session):
def migrate_guest_password(engine):
try:
with engine.connect() as conn:
trans = conn.begin()
conn.execute(text("UPDATE user SET password='' where name = 'Guest' and password !=''"))
session.commit()
trans.commit()
except exc.OperationalError:
print('Settings database is not writeable. Exiting...')
sys.exit(2)
@ -648,7 +649,7 @@ def migrate_Database(session):
is None:
create_anonymous_user(session)
migrate_guest_password(engine, session)
migrate_guest_password(engine)
def clean_database(session):