UI: changes to new edition UIs

This commit is contained in:
2025-10-07 14:11:57 +02:00
parent e061c1f5a9
commit 713dbc1a1d
6 changed files with 173 additions and 26 deletions

View File

@@ -20,6 +20,8 @@ from .widget_sources.new_edition_check_ui import Ui_Dialog as Ui_NewEditionCheck
cat = Catalogue()
LEHMANNS_LINK = "https://www.lehmanns.de/search/quick?mediatype_id=&q={}"
class NewEditionCheckSelector(QtWidgets.QDialog, Ui_NewEditionCheckSelector):
def __init__(self, parent=None):
@@ -55,41 +57,82 @@ class NewEditionCheckFoundResult(QtWidgets.QDialog, Ui_NewEditionCheckFoundResul
self.line_pages.setText(self.book.pages if self.book.pages else "")
self.line_author.setText(self.book.author if self.book.author else "")
link = self.book.link if self.book.link else ""
text = "Lehmanns" if self.book.link else "Kein Link gefunden"
if self.book.link != "SWB":
link = f"<a href='{link}'>Lehmanns</a>"
link = f"<a href='{link}'>{text}</a>"
self.line_source.setText(link)
self.line_source.setOpenExternalLinks(True)
self.line_source.setTextFormat(Qt.TextFormat.RichText)
self.line_source.setTextInteractionFlags(
Qt.TextInteractionFlag.TextBrowserInteraction
)
self.line_isbn.textChanged.connect(self.update_book)
self.line_author.textChanged.connect(self.update_book)
self.line_title.textChanged.connect(self.update_book)
self.line_ppn.textChanged.connect(self.update_book)
self.line_signature.textChanged.connect(self.update_book)
self.line_edition.textChanged.connect(self.update_book)
self.line_publisher.textChanged.connect(self.update_book)
self.line_year.textChanged.connect(self.update_book)
self.line_pages.textChanged.connect(self.update_book)
self.line_isbn.setText(
", ".join(self.book.isbn)
if isinstance(self.book.isbn, list)
else self.book.isbn
)
if (
self.book.link == "SWB"
and self.book.signature is not None
and self.book.signature != ""
):
if self.book.signature is not None and self.book.signature != "":
self.in_library.setText(
"Diese Neuauflage ist bereits in der Bibliothek vorhanden."
f"Diese Neuauflage ist bereits in der Bibliothek vorhanden.\nStandort: {self.book.library_location}"
)
self.book.link == f"https://www.lehmanns.de/search/quick?mediatype_id=&q={self.book.isbn[0]}"
isbn = (
self.book.isbn[0]
if isinstance(self.book.isbn, list) and len(self.book.isbn) > 0
else self.book.title
)
self.book.link = LEHMANNS_LINK.format(self.line_isbn.text())
if (
self.book.link == "SWB"
and self.book.signature is not None
self.book.signature is not None
and self.book.signature != ""
and self.book.library_location not in (0, "0", None)
):
self.in_library.setText(
f"Diese Neuauflage ist bereits in der Bibliothek vorhanden, und an diesem Standort: {self.book.library_location}."
)
f"https://www.lehmanns.de/search/quick?mediatype_id=&q={self.book.isbn[0]}"
isbn = (
str(self.book.isbn[0])
if isinstance(self.book.isbn, list)
else str(self.book.isbn)
)
self.book.link = LEHMANNS_LINK.format(isbn)
pass
def update_book(self):
print("update book")
# for each line edit, get the value and assign it to the book on the corresponding attribute
for line_edit, attr in [
(self.line_ppn, "ppn"),
(self.line_title, "title"),
(self.line_signature, "signature"),
(self.line_edition, "edition"),
(self.line_publisher, "publisher"),
(self.line_year, "year"),
(self.line_pages, "pages"),
(self.line_author, "author"),
(self.line_isbn, "isbn"),
]:
value = line_edit.text()
if value == "":
value = None
setattr(self.book, attr, value)
print("set", attr, "to", value)
if attr == "isbn" and value is not None:
self.line_source.setText(
f"<a href='{LEHMANNS_LINK.format(self.line_isbn.text())}'>Lehmanns</a>"
)
class NewEditionCheckBook(QtWidgets.QDialog, Ui_NewEditionCheckBook):
def __init__(self, book: BookData, responses: List[BookData], parent=None):
@@ -124,6 +167,27 @@ class NewEditionCheckBook(QtWidgets.QDialog, Ui_NewEditionCheckBook):
NewEditionCheckFoundResult(parent=self, book=response)
)
self.label_book_index.setText(f"1 / {self.stackedWidget.count()}")
link = f"<a href='{self.book.link}'>Katalog</a>"
self.label_source_local.setText(link)
self.label_source_local.setOpenExternalLinks(True)
self.label_source_local.setTextFormat(Qt.TextFormat.RichText)
self.label_source_local.setTextInteractionFlags(
Qt.TextInteractionFlag.TextBrowserInteraction
)
isbn = (
str(self.book.isbn[0])
if isinstance(self.book.isbn, list) and len(self.book.isbn) > 0
else f"{self.book.title}+{self.book.author}"
)
self.label_source_external.setText(
f"<a href='{LEHMANNS_LINK.format(isbn)}'>Lehmanns</a>"
)
self.label_source_external.setOpenExternalLinks(True)
self.label_source_external.setTextFormat(Qt.TextFormat.RichText)
self.label_source_external.setTextInteractionFlags(
Qt.TextInteractionFlag.TextBrowserInteraction
)
self.btn_next.clicked.connect(self.next)
self.btn_prev.clicked.connect(self.previous)
if self.stackedWidget.count() <= 1:
@@ -216,3 +280,10 @@ class NewEditionChecker(QtWidgets.QDialog, Ui_NewEditionCheck):
super().accept()
# print("accepted", len(accepted_books), "new editions")
self.accepted_books = accepted_books
def launch(results: List[tuple[BookData, List[BookData]]]):
app = QtWidgets.QApplication([])
widget = NewEditionChecker(results)
widget.show()
app.exec()