diff --git a/cps/db.py b/cps/db.py index a5a01aca..40ba1753 100644 --- a/cps/db.py +++ b/cps/db.py @@ -48,6 +48,7 @@ try: except ImportError: use_unidecode = False +Session = None cc_exceptions = ['datetime', 'comments', 'composite', 'series'] cc_classes = {} @@ -409,6 +410,7 @@ class CalibreDB(): def setup_db(self, config, app_db_path): self.config = config self.dispose() + global Session if not config.config_calibre_dir: config.invalidate() @@ -506,7 +508,7 @@ class CalibreDB(): backref='books')) Session = scoped_session(sessionmaker(autocommit=False, - autoflush=False, + autoflush=True, bind=self.engine)) self.session = Session() return True diff --git a/cps/tasks/convert.py b/cps/tasks/convert.py index a9cbfbd2..2b679fc0 100644 --- a/cps/tasks/convert.py +++ b/cps/tasks/convert.py @@ -53,6 +53,7 @@ class TaskConvert(CalibreTask): def _convert_ebook_format(self): error_message = None + local_session = db.Session() file_path = self.file_path book_id = self.bookid format_old_ext = u'.' + self.settings['old_book_format'].lower() @@ -92,17 +93,13 @@ class TaskConvert(CalibreTask): new_format = db.Data(name=cur_book.data[0].name, book_format=self.settings['new_book_format'].upper(), book=book_id, uncompressed_size=os.path.getsize(file_path + format_new_ext)) - - cur_book.data.append(new_format) - try: - # db.session.merge(cur_book) - calibre_db.session.commit() + local_session.merge(new_format) + local_session.commit() except SQLAlchemyError as e: - calibre_db.session.rollback() + local_session.rollback() log.error("Database error: %s", e) return - self.results['path'] = cur_book.path self.results['title'] = cur_book.title if config.config_use_google_drive: