diff --git a/src/core/models.py b/src/core/models.py index 49ec9b1..1e5abcd 100644 --- a/src/core/models.py +++ b/src/core/models.py @@ -175,6 +175,18 @@ class BookData: return int(match.group(1)) return 0 + def to_book(self) -> Book: + return Book( + author=self.author, + year=self.year, + edition=self.edition, + title=self.title, + location=self.place, + publisher=self.publisher, + signature=self.signature, + internal_notes=None, + ) + @dataclass class MailData: @@ -290,15 +302,18 @@ class ApparatData: @dataclass class XMLMailSubmission: - name: str | None - lastname: str | None - title: str | None - telno: int | None - email: str | None - app_name: str | None - subject: str | None - semester: Semester | None - books: list[BookData] | None + name: str | None = None + lastname: str | None = None + title: str | None = None + telno: int | None = None + email: str | None = None + app_name: str | None = None + subject: str | None = None + semester: Semester | None = None + books: list[BookData] | None = None + dauerapparat: bool = False + # def __post_init__(self) -> None: + # convert semester to string @dataclass @@ -374,6 +389,7 @@ class SemapDocument: self.phoneNumber = int( regex.sub(r"[^\d]", "", str(self.phoneNumber)), ) + self.title_length = len(self.title) + 3 + len(self.personName.split(",")[0]) @property def nameSetter(self): diff --git a/src/core/semester.py b/src/core/semester.py index 1d149a4..622d663 100644 --- a/src/core/semester.py +++ b/src/core/semester.py @@ -99,6 +99,9 @@ class Semester: self.value = f"WiSe {year}/{next_year}" else: # SoSe + # year may only be the last two digits, so we don't want to pad it with a leading zero + if len(str(year)) > 2: + year = int(str(year)[-2:]) self.value = f"SoSe {year}" # ------------------------------------------------------------------ diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py index 151a402..210d54e 100644 --- a/src/ui/userInterface.py +++ b/src/ui/userInterface.py @@ -1243,28 +1243,25 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat): self.active_apparat, filetype=file_type, ) - if file_type == "pdf": - # TODO: implement parser here - data = pdf_to_semap(file) - signatures = data.signatures - # self.confirm_popup("PDF Dateien werden nicht unterstützt!", title="Fehler") - return signatures - if file_type == "csv": - return csv_to_list(file) - if file_type in ("docx", "doc"): - data = word_to_semap(file) - log.info("Converted data from semap file") - log.debug("Got the data: {}", data) - - return data - if file_type == "eml": - data = eml_to_semap(file) - log.info("Converted data from eml file") - log.debug("Got the data: {}", data) - - return data - error = "Dateityp wird nicht unterstützt" - raise ValueError(error) + match file_type: + case "pdf": + # TODO: implement parser here + data = pdf_to_semap(file) + signatures = data.signatures + # self.confirm_popup("PDF Dateien werden nicht unterstützt!", title="Fehler") + return signatures + case "csv": + return csv_to_list(file) + case _ if file_type in ("docx", "doc"): + return word_to_semap(file) + case "eml": + data = eml_to_semap(file) + log.info("Converted data from eml file") + log.debug("Got the data: {}", data) + return data + case _: + error = "Dateityp wird nicht unterstützt" + raise ValueError(error) def import_data_from_document(self): global valid_input @@ -1314,6 +1311,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat): self.app_fach.setCurrentText(data.subject if data.subject in subjects else "") self.prof_title.setText(data.personTitle) self.drpdwn_prof_name.setCurrentText(data.personName) + self.sem_year.setText("20" + str(data.semester.year)) if data.semester.semester == "SoSe": self.sem_sommer.setChecked(True) @@ -1325,9 +1323,13 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat): self.check_eternal_app.setChecked(True) self.validate_semester() if data.books != []: + log.info("Importing books from document") + log.info(data) self.btn_check_file_threaded(data) def btn_check_file_threaded(self, c_document: Optional[SemapDocument] = None): + log.info("Starting threaded file check") + log.info(c_document) for runner in self.bookGrabber: if not runner.isRunning(): runner.deleteLater() @@ -1373,8 +1375,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat): prof_id = self.db.getProfId(self.profdata) # log.debug("Prof ID is None", prof_id) - document = None - + document = c_document if c_document is None: document = self.extract_document_data() if document is None: