fix: update eml support
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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}"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user