From 6a5432330791439e765bd450c9f3e4670d26c32f Mon Sep 17 00:00:00 2001
From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com>
Date: Mon, 3 Feb 2025 15:31:43 -0800
Subject: [PATCH] refactor: wrap migration_iterator lambda in a try/except
block (#773)
---
tagstudio/src/qt/widgets/migration_modal.py | 48 ++++++++++++---------
1 file changed, 27 insertions(+), 21 deletions(-)
diff --git a/tagstudio/src/qt/widgets/migration_modal.py b/tagstudio/src/qt/widgets/migration_modal.py
index b8b3f4a1..11acd721 100644
--- a/tagstudio/src/qt/widgets/migration_modal.py
+++ b/tagstudio/src/qt/widgets/migration_modal.py
@@ -367,29 +367,35 @@ class JsonMigrationModal(QObject):
pb.setCancelButton(None)
self.body_wrapper_01.layout().addWidget(pb)
- iterator = FunctionIterator(self.migration_iterator)
- iterator.value.connect(
- lambda x: (
- pb.setLabelText(f"
{x}
"),
- self.update_sql_value_ui(show_msg_box=False)
- if x == Translations["json_migration.checking_for_parity"]
- else (),
- self.update_parity_ui()
- if x == Translations["json_migration.checking_for_parity"]
- else (),
+ try:
+ iterator = FunctionIterator(self.migration_iterator)
+ iterator.value.connect(
+ lambda x: (
+ pb.setLabelText(f"{x}
"),
+ self.update_sql_value_ui(show_msg_box=False)
+ if x == Translations["json_migration.checking_for_parity"]
+ else (),
+ self.update_parity_ui()
+ if x == Translations["json_migration.checking_for_parity"]
+ else (),
+ )
)
- )
- r = CustomRunnable(iterator.run)
- r.done.connect(
- lambda: (
- self.update_sql_value_ui(show_msg_box=not skip_ui),
- pb.setMinimum(1),
- pb.setValue(1),
- # Enable the finish button
- self.stack[1].buttons[4].setDisabled(False), # type: ignore
+ r = CustomRunnable(iterator.run)
+ r.done.connect(
+ lambda: (
+ self.update_sql_value_ui(show_msg_box=not skip_ui),
+ pb.setMinimum(1),
+ pb.setValue(1),
+ # Enable the finish button
+ self.stack[1].buttons[4].setDisabled(False), # type: ignore
+ )
)
- )
- QThreadPool.globalInstance().start(r)
+ QThreadPool.globalInstance().start(r)
+ except Exception as e:
+ logger.error("[MigrationModal][Iterator] Error:", error=e)
+ pb.setLabelText(f"{type(e).__name__}
")
+ pb.setMinimum(1)
+ pb.setValue(1)
def migration_iterator(self):
"""Iterate over the library migration process."""