From a1b2fddc3c468c543f93506868f46b5770cb5702 Mon Sep 17 00:00:00 2001 From: WorldTeacher Date: Tue, 26 Nov 2024 10:21:02 +0100 Subject: [PATCH] feat: enhance WebRequest and BibTextTransformer to support exact signature search and any book mode --- src/logic/webrequest.py | 16 +++++++++++++--- src/ui/dialogs/medienadder.py | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/logic/webrequest.py b/src/logic/webrequest.py index dbef829..516bc52 100644 --- a/src/logic/webrequest.py +++ b/src/logic/webrequest.py @@ -38,14 +38,18 @@ class WebRequest: self.data = None self.timeout = 5 logger.log_info("Initialized WebRequest") - + + @property def use_any_book(self): + """use any book that matches the search term""" self.use_any = True + logger.log_info("Using any book") return self def set_apparat(self, apparat): self.apparat = apparat if int(self.apparat) < 10: self.apparat = f"0{self.apparat}" + logger.log_info(f"Set apparat to {self.apparat}") return self def get_ppn(self, signature): @@ -102,7 +106,7 @@ class WebRequest: return return_data else: logger.log_error("No
 tag found")
-                            return return_data
+                            raise ValueError("No 
 tag found")
                     if f"Semesterapparat-{self.apparat}" in item_location:
                         pre_tag = soup.find_all("pre")
                         return_data = []
@@ -149,12 +153,18 @@ class BibTextTransformer:
     def __init__(self, mode: str = "ARRAY") -> None:
         self.mode = mode
         self.field = None
+        self.signature = None
         if mode not in self.valid_modes:
             logger.log_error(f"Mode {mode} not valid")
             raise ValueError(f"Mode {mode} not valid")
         self.data = None
         # self.bookdata = BookData(**self.data)
 
+    def use_signature(self, signature: str):
+        """use the exact signature to search for the book"""
+        self.signature = signature
+        return self
+
     def get_data(self, data: list):
         RIS_IDENT = "TY  -"
         ARRAY_IDENT = "[kid]"
@@ -201,7 +211,7 @@ class BibTextTransformer:
             return None 
         match self.mode:
             case "ARRAY":
-                return ARRAYData().transform(self.data)
+                return ARRAYData(self.signature).transform(self.data)
             case "COinS":
                 return COinSData().transform(self.data)
             case "BibTeX":
diff --git a/src/ui/dialogs/medienadder.py b/src/ui/dialogs/medienadder.py
index 09993b6..4986463 100644
--- a/src/ui/dialogs/medienadder.py
+++ b/src/ui/dialogs/medienadder.py
@@ -12,12 +12,22 @@ class MedienAdder(QtWidgets.QDialog, Ui_Dialog):
         self.color_table()
         self.mode = ""
         self.data = []
+        self.use_any = False
+        self.use_exact = False
         self.lineEdit.returnPressed.connect(self.add_signature)
         self.btn_cancel.clicked.connect(self.close)
         self.btn_save.clicked.connect(self.send_data)
         #disable button box button okay
         self.btn_save.setEnabled(False)
-        
+        self.check_use_exact_signature.clicked.connect(self.check_use_exact)
+        self.check_use_any_book.clicked.connect(self.check_use_any)
+
+    def check_use_exact(self):
+        self.use_exact = self.check_use_exact_signature.isChecked()
+
+    def check_use_any(self):
+        self.use_any = self.check_use_any_book.isChecked()
+
     def enable_button(self):
         if self.listWidget.count() > 0:
             self.btn_save.setEnabled(True)
@@ -59,7 +69,7 @@ class MedienAdder(QtWidgets.QDialog, Ui_Dialog):
                         item.setText(item.text().split(".")[0])
 
 
-def lauhc_gui():
+def launch_gui():
     app = QtWidgets.QApplication([])
     dialog = MedienAdder()
     dialog.show()