Fixes for flask version 2.1
Fixes for compatibility with sqlalchemy 2.0
This commit is contained in:
parent
d9f86aecd2
commit
93e8c5be32
|
@ -584,7 +584,7 @@ class CalibreDB():
|
||||||
|
|
||||||
if not cc_classes:
|
if not cc_classes:
|
||||||
try:
|
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)
|
cls.setup_db_cc_classes(cc)
|
||||||
except OperationalError as e:
|
except OperationalError as e:
|
||||||
log.debug_or_exception(e)
|
log.debug_or_exception(e)
|
||||||
|
|
|
@ -29,7 +29,7 @@ except ImportError:
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from flask import send_file
|
from flask import send_file, __version__
|
||||||
|
|
||||||
from . import logger, config
|
from . import logger, config
|
||||||
from .about import collect_stats
|
from .about import collect_stats
|
||||||
|
@ -43,9 +43,15 @@ def assemble_logfiles(file_name):
|
||||||
with open(f, 'r') as fd:
|
with open(f, 'r') as fd:
|
||||||
shutil.copyfileobj(fd, wfd)
|
shutil.copyfileobj(fd, wfd)
|
||||||
wfd.seek(0)
|
wfd.seek(0)
|
||||||
return send_file(wfd,
|
if int(__version__.split('.')[0]) < 2:
|
||||||
as_attachment=True,
|
return send_file(wfd,
|
||||||
attachment_filename=os.path.basename(file_name))
|
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():
|
def send_debug():
|
||||||
file_list = glob.glob(logger.get_logfile(config.config_logfile) + '*')
|
file_list = glob.glob(logger.get_logfile(config.config_logfile) + '*')
|
||||||
|
@ -60,6 +66,11 @@ def send_debug():
|
||||||
for fp in file_list:
|
for fp in file_list:
|
||||||
zf.write(fp, os.path.basename(fp))
|
zf.write(fp, os.path.basename(fp))
|
||||||
memory_zip.seek(0)
|
memory_zip.seek(0)
|
||||||
return send_file(memory_zip,
|
if int(__version__.split('.')[0]) < 2:
|
||||||
as_attachment=True,
|
return send_file(memory_zip,
|
||||||
attachment_filename="Calibre-Web-debug-pack.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")
|
||||||
|
|
|
@ -34,6 +34,7 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
from sqlalchemy.exc import OperationalError, InvalidRequestError
|
from sqlalchemy.exc import OperationalError, InvalidRequestError
|
||||||
|
from sqlalchemy.sql.expression import text
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from apiclient import errors
|
from apiclient import errors
|
||||||
|
@ -168,7 +169,7 @@ class PermissionAdded(Base):
|
||||||
def migrate():
|
def migrate():
|
||||||
if not engine.dialect.has_table(engine.connect(), "permissions_added"):
|
if not engine.dialect.has_table(engine.connect(), "permissions_added"):
|
||||||
PermissionAdded.__table__.create(bind = engine)
|
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]:
|
if 'CREATE TABLE gdrive_ids' in sql[0]:
|
||||||
currUniqueConstraint = 'UNIQUE (gdrive_id)'
|
currUniqueConstraint = 'UNIQUE (gdrive_id)'
|
||||||
if currUniqueConstraint in sql[0]:
|
if currUniqueConstraint in sql[0]:
|
||||||
|
|
|
@ -485,11 +485,12 @@ def migrate_registration_table(engine, session):
|
||||||
|
|
||||||
|
|
||||||
# Remove login capability of user Guest
|
# Remove login capability of user Guest
|
||||||
def migrate_guest_password(engine, session):
|
def migrate_guest_password(engine):
|
||||||
try:
|
try:
|
||||||
with engine.connect() as conn:
|
with engine.connect() as conn:
|
||||||
|
trans = conn.begin()
|
||||||
conn.execute(text("UPDATE user SET password='' where name = 'Guest' and password !=''"))
|
conn.execute(text("UPDATE user SET password='' where name = 'Guest' and password !=''"))
|
||||||
session.commit()
|
trans.commit()
|
||||||
except exc.OperationalError:
|
except exc.OperationalError:
|
||||||
print('Settings database is not writeable. Exiting...')
|
print('Settings database is not writeable. Exiting...')
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
|
@ -648,7 +649,7 @@ def migrate_Database(session):
|
||||||
is None:
|
is None:
|
||||||
create_anonymous_user(session)
|
create_anonymous_user(session)
|
||||||
|
|
||||||
migrate_guest_password(engine, session)
|
migrate_guest_password(engine)
|
||||||
|
|
||||||
|
|
||||||
def clean_database(session):
|
def clean_database(session):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user