UI-Signatures: implement signature update functionality with progress tracking

This commit is contained in:
2025-09-03 10:37:44 +02:00
parent 4254567bfb
commit f6ab64a8ee
3 changed files with 168 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
from PySide6 import QtCore, QtWidgets
from src.backend.catalogue import Catalogue
from src.backend.database import Database
from .widget_sources.admin_update_signatures_ui import Ui_Dialog
class UpdaterThread(QtCore.QThread):
progress = QtCore.Signal(int)
currtot = QtCore.Signal(int, int)
def __init__(self, books=None):
super().__init__()
self.books = books
self.db = Database()
self.catalogue = Catalogue()
def run(self):
total_books = len(self.books)
for index, book in enumerate(self.books):
id = book["id"]
bookdata = book["bookdata"]
ppn = bookdata.link.split("kid=")[-1]
result = self.catalogue.get_book(ppn)
if result:
bookdata.signature = result.signature
print(bookdata)
self.db.updateBookdata(id, bookdata)
else:
print(f"No result for {ppn}")
self.db.deleteBook(id)
self.progress.emit(index + 1)
self.currtot.emit(index + 1, total_books)
class UpdateSignatures(QtWidgets.QDialog, Ui_Dialog):
def __init__(self, parent=None):
super(UpdateSignatures, self).__init__(parent)
self.setupUi(self)
self.setWindowTitle("Updating signatures...")
self.progressBar.setValue(0)
self.pushButton.clicked.connect(self.start)
self.db = Database()
self.catalogue = Catalogue()
def start(self):
books = self.db.getAllBooks()
total_books = len(books)
self.progressBar.setMaximum(total_books)
self.updater = UpdaterThread(books)
self.updater.progress.connect(self.update_progress)
self.updater.start()
def update_progress(self, value):
self.progressBar.setValue(value)
if value >= self.progressBar.maximum():
self.pushButton.setText("Done")
self.pushButton.setEnabled(False)