mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-30 23:03:02 +00:00 
			
		
		
		
	Session no longer expires on commit
This commit is contained in:
		| @@ -426,18 +426,19 @@ class CalibreDB(): | |||||||
|     # instances alive once they reach the end of their respective scopes |     # instances alive once they reach the end of their respective scopes | ||||||
|     instances = WeakSet() |     instances = WeakSet() | ||||||
|  |  | ||||||
|     def __init__(self): |     def __init__(self, expire_on_commit=False): | ||||||
|         """ Initialize a new CalibreDB session |         """ Initialize a new CalibreDB session | ||||||
|         """ |         """ | ||||||
|         self.session = None |         self.session = None | ||||||
|         if self._init: |         if self._init: | ||||||
|             self.initSession() |             self.initSession(expire_on_commit) | ||||||
|  |  | ||||||
|         self.instances.add(self) |         self.instances.add(self) | ||||||
|  |  | ||||||
|  |  | ||||||
|     def initSession(self): |     def initSession(self, expire_on_commit): | ||||||
|         self.session = self.session_factory() |         self.session = self.session_factory() | ||||||
|  |         self.session.expire_on_commit = expire_on_commit | ||||||
|         self.update_title_sort(self.config) |         self.update_title_sort(self.config) | ||||||
|  |  | ||||||
|     @classmethod |     @classmethod | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ from shutil import copyfile | |||||||
| from sqlalchemy.exc import SQLAlchemyError | from sqlalchemy.exc import SQLAlchemyError | ||||||
|  |  | ||||||
| from cps.services.worker import CalibreTask | from cps.services.worker import CalibreTask | ||||||
| from cps import calibre_db, db | from cps import db | ||||||
| from cps import logger, config | from cps import logger, config | ||||||
| from cps.subproc_wrapper import process_open | from cps.subproc_wrapper import process_open | ||||||
| from flask_babel import gettext as _ | from flask_babel import gettext as _ | ||||||
| @@ -33,8 +33,10 @@ class TaskConvert(CalibreTask): | |||||||
|     def run(self, worker_thread): |     def run(self, worker_thread): | ||||||
|         self.worker_thread = worker_thread |         self.worker_thread = worker_thread | ||||||
|         if config.config_use_google_drive: |         if config.config_use_google_drive: | ||||||
|             cur_book = calibre_db.get_book(self.bookid) |             worker_db = db.CalibreDB() | ||||||
|             data = calibre_db.get_book_format(self.bookid, self.settings['old_book_format']) |             cur_book = worker_db.get_book(self.bookid) | ||||||
|  |             data = worker_db.get_book_format(self.bookid, self.settings['old_book_format']) | ||||||
|  |             worker_db.session.close() | ||||||
|             df = gdriveutils.getFileFromEbooksFolder(cur_book.path, |             df = gdriveutils.getFileFromEbooksFolder(cur_book.path, | ||||||
|                                                      data.name + "." + self.settings['old_book_format'].lower()) |                                                      data.name + "." + self.settings['old_book_format'].lower()) | ||||||
|             if df: |             if df: | ||||||
| @@ -71,7 +73,7 @@ class TaskConvert(CalibreTask): | |||||||
|  |  | ||||||
|     def _convert_ebook_format(self): |     def _convert_ebook_format(self): | ||||||
|         error_message = None |         error_message = None | ||||||
|         local_session = db.CalibreDB().session |         local_db = db.CalibreDB() | ||||||
|         file_path = self.file_path |         file_path = self.file_path | ||||||
|         book_id = self.bookid |         book_id = self.bookid | ||||||
|         format_old_ext = u'.' + self.settings['old_book_format'].lower() |         format_old_ext = u'.' + self.settings['old_book_format'].lower() | ||||||
| @@ -82,10 +84,11 @@ class TaskConvert(CalibreTask): | |||||||
|         # this will allow send to kindle workflow to continue to work |         # this will allow send to kindle workflow to continue to work | ||||||
|         if os.path.isfile(file_path + format_new_ext): |         if os.path.isfile(file_path + format_new_ext): | ||||||
|             log.info("Book id %d already converted to %s", book_id, format_new_ext) |             log.info("Book id %d already converted to %s", book_id, format_new_ext) | ||||||
|             cur_book = calibre_db.get_book(book_id) |             cur_book = local_db.session.get_book(book_id) | ||||||
|             self.results['path'] = file_path |             self.results['path'] = file_path | ||||||
|             self.results['title'] = cur_book.title |             self.results['title'] = cur_book.title | ||||||
|             self._handleSuccess() |             self._handleSuccess() | ||||||
|  |             local_db.session.close() | ||||||
|             return os.path.basename(file_path + format_new_ext) |             return os.path.basename(file_path + format_new_ext) | ||||||
|         else: |         else: | ||||||
|             log.info("Book id %d - target format of %s does not exist. Moving forward with convert.", |             log.info("Book id %d - target format of %s does not exist. Moving forward with convert.", | ||||||
| @@ -105,18 +108,19 @@ class TaskConvert(CalibreTask): | |||||||
|             check, error_message = self._convert_calibre(file_path, format_old_ext, format_new_ext) |             check, error_message = self._convert_calibre(file_path, format_old_ext, format_new_ext) | ||||||
|  |  | ||||||
|         if check == 0: |         if check == 0: | ||||||
|             cur_book = calibre_db.get_book(book_id) |             cur_book = local_db.get_book(book_id) | ||||||
|             if os.path.isfile(file_path + format_new_ext): |             if os.path.isfile(file_path + format_new_ext): | ||||||
|                 # self.db_queue.join() |                 # self.db_queue.join() | ||||||
|                 new_format = db.Data(name=cur_book.data[0].name, |                 new_format = db.Data(name=cur_book.data[0].name, | ||||||
|                                          book_format=self.settings['new_book_format'].upper(), |                                          book_format=self.settings['new_book_format'].upper(), | ||||||
|                                          book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext)) |                                          book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext)) | ||||||
|                 try: |                 try: | ||||||
|                     local_session.merge(new_format) |                     local_db.session.merge(new_format) | ||||||
|                     local_session.commit() |                     local_db.session.commit() | ||||||
|                 except SQLAlchemyError as e: |                 except SQLAlchemyError as e: | ||||||
|                     local_session.rollback() |                     local_db.rollback() | ||||||
|                     log.error("Database error: %s", e) |                     log.error("Database error: %s", e) | ||||||
|  |                     local_db.session.close() | ||||||
|                     return |                     return | ||||||
|                 self.results['path'] = cur_book.path |                 self.results['path'] = cur_book.path | ||||||
|                 self.results['title'] = cur_book.title |                 self.results['title'] = cur_book.title | ||||||
| @@ -125,6 +129,7 @@ class TaskConvert(CalibreTask): | |||||||
|                 return os.path.basename(file_path + format_new_ext) |                 return os.path.basename(file_path + format_new_ext) | ||||||
|             else: |             else: | ||||||
|                 error_message = _('%(format)s format not found on disk', format=format_new_ext.upper()) |                 error_message = _('%(format)s format not found on disk', format=format_new_ext.upper()) | ||||||
|  |         local_db.session.close() | ||||||
|         log.info("ebook converter failed with error while converting book") |         log.info("ebook converter failed with error while converting book") | ||||||
|         if not error_message: |         if not error_message: | ||||||
|             error_message = _('Ebook converter failed with unknown error') |             error_message = _('Ebook converter failed with unknown error') | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ozzieisaacs
					Ozzieisaacs