chore(codebase): import fixes, restructuring

This commit is contained in:
2025-12-01 14:24:24 +01:00
parent 6523ad655c
commit 05289ef244
58 changed files with 2692 additions and 6574 deletions

View File

@@ -1,3 +1,5 @@
from __future__ import annotations
import json
from dataclasses import dataclass, field
from enum import Enum
@@ -5,19 +7,18 @@ from typing import Any, Optional, Union
import regex
from src.logic.openai import name_tester, run_shortener, semester_converter
from src.logic.semester import Semester
from src.core.semester import Semester
@dataclass
class Prof:
id: Optional[int] = None
_title: Optional[str] = None
firstname: Optional[str] = None
lastname: Optional[str] = None
fullname: Optional[str] = None
mail: Optional[str] = None
telnr: Optional[str] = None
id: int | None = None
_title: str | None = None
firstname: str | None = None
lastname: str | None = None
fullname: str | None = None
mail: str | None = None
telnr: str | None = None
# add function that sets the data based on a dict
def from_dict(self, data: dict[str, Union[str, int]]):
@@ -37,7 +38,7 @@ class Prof:
self._title = value
# add function that sets the data from a tuple
def from_tuple(self, data: tuple[Union[str, int], ...]) -> "Prof":
def from_tuple(self, data: tuple[Union[str, int], ...]) -> Prof:
self.id = data[0]
self._title = data[1]
self.firstname = data[2]
@@ -92,12 +93,12 @@ class BookData:
self.year = regex.sub(r"[^\d]", "", str(self.year)) if self.year else None
self.in_library = True if self.signature else False
def from_dict(self, data: dict) -> "BookData":
def from_dict(self, data: dict) -> BookData:
for key, value in data.items():
setattr(self, key, value)
return self
def merge(self, other: "BookData") -> "BookData":
def merge(self, other: BookData) -> BookData:
for key, value in other.__dict__.items():
# merge lists, if the attribute is a list, extend it
if isinstance(value, list):
@@ -142,12 +143,12 @@ class BookData:
return "eBook"
return "Druckausgabe"
def from_string(self, data: str) -> "BookData":
def from_string(self, data: str) -> BookData:
ndata = json.loads(data)
return BookData(**ndata)
def from_LehmannsSearchResult(self, result: Any) -> "BookData":
def from_LehmannsSearchResult(self, result: Any) -> BookData:
self.title = result.title
self.author = "; ".join(result.authors) if result.authors else None
self.edition = str(result.edition) if result.edition else None
@@ -177,10 +178,10 @@ class BookData:
@dataclass
class MailData:
subject: Optional[str] = None
body: Optional[str] = None
mailto: Optional[str] = None
prof: Optional[str] = None
subject: str | None
body: str | None
mailto: str | None
prof: str | None
class Subjects(Enum):
@@ -242,7 +243,7 @@ class Apparat:
prof_id_adis: str | None = None
konto: int | None = None
def from_tuple(self, data: tuple[Any, ...]) -> "Apparat":
def from_tuple(self, data: tuple[Any, ...]) -> Apparat:
self.id = data[0]
self.name = data[1]
self.prof_id = data[2]
@@ -273,7 +274,7 @@ class ELSA:
semester: str | None = None
prof_id: int | None = None
def from_tuple(self, data: tuple[Any, ...]) -> "ELSA":
def from_tuple(self, data: tuple[Any, ...]) -> ELSA:
self.id = data[0]
self.date = data[1]
self.semester = data[2]
@@ -289,27 +290,27 @@ class ApparatData:
@dataclass
class XMLMailSubmission:
name: Optional[str] = None
lastname: Optional[str] = None
title: Optional[str] = None
telno: Optional[int] = None
email: Optional[str] = None
app_name: Optional[str] = None
subject: Optional[str] = None
semester: Optional[Semester] = None
books: Optional[list[BookData]] = None
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
@dataclass
class Book:
author: str = None
year: str = None
edition: str = None
title: str = None
location: str = None
publisher: str = None
signature: str = None
internal_notes: str = None
author: str | None
year: str | None
edition: str | None
title: str | None
location: str | None
publisher: str | None
signature: str | None
internal_notes: str | None
@property
def has_signature(self) -> bool:
@@ -354,18 +355,18 @@ class Book:
@dataclass
class SemapDocument:
subject: str = None
phoneNumber: int = None
mail: str = None
title: str = None
subject: str | None
phoneNumber: int | None
mail: str | None
title: str | None
personName: str | None
personTitle: str | None
title_suggestions: list[str] = None
semester: Union[str, Semester] = None
books: list[Book] = None
eternal: bool = False
personName: str = None
personTitle: str = None
title_length = 0
title_max_length = 0
title_length: int = 0
title_max_length: int = 0
def __post_init__(self) -> None:
"""."""
@@ -376,6 +377,8 @@ class SemapDocument:
@property
def nameSetter(self):
from src.services.openai import name_tester, run_shortener
data = name_tester(self.personTitle)
name = f"{data['last_name']}, {data['first_name']}"
if data["title"] is not None:
@@ -394,6 +397,8 @@ class SemapDocument:
@property
def renameSemester(self) -> None:
from src.services.openai import semester_converter
if self.semester:
if ", Dauer" in self.semester:
self.semester = self.semester.split(",")[0]