mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-30 23:03:02 +00:00 
			
		
		
		
	Fixes for flask version 2.1
Fixes for compatibility with sqlalchemy 2.0
This commit is contained in:
		| @@ -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) | ||||||
|  |     if int(__version__.split('.')[0]) < 2: | ||||||
|         return send_file(wfd, |         return send_file(wfd, | ||||||
|                          as_attachment=True, |                          as_attachment=True, | ||||||
|                          attachment_filename=os.path.basename(file_name)) |                          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) | ||||||
|  |     if int(__version__.split('.')[0]) < 2: | ||||||
|         return send_file(memory_zip, |         return send_file(memory_zip, | ||||||
|                          as_attachment=True, |                          as_attachment=True, | ||||||
|                          attachment_filename="Calibre-Web-debug-pack.zip") |                          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): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ozzie Isaacs
					Ozzie Isaacs