fix: update eml support
This commit is contained in:
@@ -175,6 +175,18 @@ class BookData:
|
|||||||
return int(match.group(1))
|
return int(match.group(1))
|
||||||
return 0
|
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
|
@dataclass
|
||||||
class MailData:
|
class MailData:
|
||||||
@@ -290,15 +302,18 @@ class ApparatData:
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class XMLMailSubmission:
|
class XMLMailSubmission:
|
||||||
name: str | None
|
name: str | None = None
|
||||||
lastname: str | None
|
lastname: str | None = None
|
||||||
title: str | None
|
title: str | None = None
|
||||||
telno: int | None
|
telno: int | None = None
|
||||||
email: str | None
|
email: str | None = None
|
||||||
app_name: str | None
|
app_name: str | None = None
|
||||||
subject: str | None
|
subject: str | None = None
|
||||||
semester: Semester | None
|
semester: Semester | None = None
|
||||||
books: list[BookData] | None
|
books: list[BookData] | None = None
|
||||||
|
dauerapparat: bool = False
|
||||||
|
# def __post_init__(self) -> None:
|
||||||
|
# convert semester to string
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
@@ -374,6 +389,7 @@ class SemapDocument:
|
|||||||
self.phoneNumber = int(
|
self.phoneNumber = int(
|
||||||
regex.sub(r"[^\d]", "", str(self.phoneNumber)),
|
regex.sub(r"[^\d]", "", str(self.phoneNumber)),
|
||||||
)
|
)
|
||||||
|
self.title_length = len(self.title) + 3 + len(self.personName.split(",")[0])
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def nameSetter(self):
|
def nameSetter(self):
|
||||||
|
|||||||
@@ -99,6 +99,9 @@ class Semester:
|
|||||||
|
|
||||||
self.value = f"WiSe {year}/{next_year}"
|
self.value = f"WiSe {year}/{next_year}"
|
||||||
else: # SoSe
|
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}"
|
self.value = f"SoSe {year}"
|
||||||
|
|
||||||
# ------------------------------------------------------------------
|
# ------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1243,28 +1243,25 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
|
|||||||
self.active_apparat,
|
self.active_apparat,
|
||||||
filetype=file_type,
|
filetype=file_type,
|
||||||
)
|
)
|
||||||
if file_type == "pdf":
|
match file_type:
|
||||||
# TODO: implement parser here
|
case "pdf":
|
||||||
data = pdf_to_semap(file)
|
# TODO: implement parser here
|
||||||
signatures = data.signatures
|
data = pdf_to_semap(file)
|
||||||
# self.confirm_popup("PDF Dateien werden nicht unterstützt!", title="Fehler")
|
signatures = data.signatures
|
||||||
return signatures
|
# self.confirm_popup("PDF Dateien werden nicht unterstützt!", title="Fehler")
|
||||||
if file_type == "csv":
|
return signatures
|
||||||
return csv_to_list(file)
|
case "csv":
|
||||||
if file_type in ("docx", "doc"):
|
return csv_to_list(file)
|
||||||
data = word_to_semap(file)
|
case _ if file_type in ("docx", "doc"):
|
||||||
log.info("Converted data from semap file")
|
return word_to_semap(file)
|
||||||
log.debug("Got the data: {}", data)
|
case "eml":
|
||||||
|
data = eml_to_semap(file)
|
||||||
return data
|
log.info("Converted data from eml file")
|
||||||
if file_type == "eml":
|
log.debug("Got the data: {}", data)
|
||||||
data = eml_to_semap(file)
|
return data
|
||||||
log.info("Converted data from eml file")
|
case _:
|
||||||
log.debug("Got the data: {}", data)
|
error = "Dateityp wird nicht unterstützt"
|
||||||
|
raise ValueError(error)
|
||||||
return data
|
|
||||||
error = "Dateityp wird nicht unterstützt"
|
|
||||||
raise ValueError(error)
|
|
||||||
|
|
||||||
def import_data_from_document(self):
|
def import_data_from_document(self):
|
||||||
global valid_input
|
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.app_fach.setCurrentText(data.subject if data.subject in subjects else "")
|
||||||
self.prof_title.setText(data.personTitle)
|
self.prof_title.setText(data.personTitle)
|
||||||
self.drpdwn_prof_name.setCurrentText(data.personName)
|
self.drpdwn_prof_name.setCurrentText(data.personName)
|
||||||
|
|
||||||
self.sem_year.setText("20" + str(data.semester.year))
|
self.sem_year.setText("20" + str(data.semester.year))
|
||||||
if data.semester.semester == "SoSe":
|
if data.semester.semester == "SoSe":
|
||||||
self.sem_sommer.setChecked(True)
|
self.sem_sommer.setChecked(True)
|
||||||
@@ -1325,9 +1323,13 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
|
|||||||
self.check_eternal_app.setChecked(True)
|
self.check_eternal_app.setChecked(True)
|
||||||
self.validate_semester()
|
self.validate_semester()
|
||||||
if data.books != []:
|
if data.books != []:
|
||||||
|
log.info("Importing books from document")
|
||||||
|
log.info(data)
|
||||||
self.btn_check_file_threaded(data)
|
self.btn_check_file_threaded(data)
|
||||||
|
|
||||||
def btn_check_file_threaded(self, c_document: Optional[SemapDocument] = None):
|
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:
|
for runner in self.bookGrabber:
|
||||||
if not runner.isRunning():
|
if not runner.isRunning():
|
||||||
runner.deleteLater()
|
runner.deleteLater()
|
||||||
@@ -1373,8 +1375,7 @@ class Ui(QtWidgets.QMainWindow, Ui_Semesterapparat):
|
|||||||
prof_id = self.db.getProfId(self.profdata)
|
prof_id = self.db.getProfId(self.profdata)
|
||||||
|
|
||||||
# log.debug("Prof ID is None", prof_id)
|
# log.debug("Prof ID is None", prof_id)
|
||||||
document = None
|
document = c_document
|
||||||
|
|
||||||
if c_document is None:
|
if c_document is None:
|
||||||
document = self.extract_document_data()
|
document = self.extract_document_data()
|
||||||
if document is None:
|
if document is None:
|
||||||
|
|||||||
Reference in New Issue
Block a user