diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index a48d035..892b841 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -57,6 +57,3 @@ jobs: body: ${{ env.RELEASE_NOTES }} draft: false prerelease: false - env: - GITHUB_TOKEN: ${{ secrets.TOKEN }} - GITHUB_REPOSITORY: ${{ github.repository }} \ No newline at end of file diff --git a/.version b/.version index 7dff5b8..afaf360 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.2.1 \ No newline at end of file +1.0.0 \ No newline at end of file diff --git a/mail_vorlagen/Neuauflagen für Semesterapparat {AppNr} - {AppName}.eml b/mail_vorlagen/Neuauflagen für Semesterapparat {AppNr} - {AppName}.eml new file mode 100644 index 0000000..5f0b3be --- /dev/null +++ b/mail_vorlagen/Neuauflagen für Semesterapparat {AppNr} - {AppName}.eml @@ -0,0 +1,21 @@ +Subject: Vorschläge für Neuauflagen - {Appname} +MIME-Version: 1.0 +Content-Type: text/html; charset="UTF-8" +Content-Transfer-Encoding: 8bit + + +
+ + + +{greeting}
+für Ihren Semesterapparat {AppNr} - {Appname} wurden folgende Neuauflagen gefunden:
+{newEditions}
+Sollen wir die alte(n) Auflage(n) aus dem Apparat durch diese austauschen?
+-- +\ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 2a9433a..470172a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,17 +1,18 @@ [project] name = "semesterapparatsmanager" -version = "0.2.1" +version = "1.0.0" description = "Add your description here" readme = "README.md" -requires-python = ">=3.12" +requires-python = ">=3.13" dependencies = [ "appdirs>=1.4.4", - "beautifulsoup4>=4.12.3", + "beautifulsoup4>=4.13.5", "bump-my-version>=0.29.0", - "chardet>=5.2.0", + "charset-normalizer>=3.4.3", "comtypes>=1.4.9", "darkdetect>=0.8.0", "docx2pdf>=0.1.8", + "httpx>=0.28.1", "loguru>=0.7.3", "mkdocs>=1.6.1", "mkdocs-material>=9.5.49", @@ -35,9 +36,12 @@ dev = [ "icecream>=2.1.4", "nuitka>=2.5.9", ] +swbtest = [ + "alive-progress>=3.3.0", +] [tool.bumpversion] -current_version = "0.2.1" +current_version = "1.0.0" parse = "(?P{signature}
+
tag found")
- raise ValueError("No tag found")
- elif f"Semesterapparat-{self.apparat}" in item_location:
+ if "1. OG Semesterapparat" in location.text:
+ log.success("Found Semesterapparat, adding entry")
pre_tag = soup.find_all("pre")
return_data = []
if pre_tag:
@@ -137,10 +124,36 @@ class WebRequest:
log.error("No tag found")
return return_data
else:
- log.error(
- f"Signature {self.signature} not found in {item_location}"
- )
- # return_data = []
+ item_location = location.find(
+ "div", class_="col-xs-12 col-md-7 col-lg-8 rds-dl-panel"
+ ).text.strip()
+ log.debug(f"Item location: {item_location}")
+ if self.use_any:
+ pre_tag = soup.find_all("pre")
+ if pre_tag:
+ for tag in pre_tag:
+ data = tag.text.strip()
+ return_data.append(data)
+ return return_data
+ else:
+ log.error("No tag found")
+ raise ValueError("No tag found")
+ elif f"Semesterapparat-{self.apparat}" in item_location:
+ pre_tag = soup.find_all("pre")
+ return_data = []
+ if pre_tag:
+ for tag in pre_tag:
+ data = tag.text.strip()
+ return_data.append(data)
+ return return_data
+ else:
+ log.error("No tag found")
+ return return_data
+ else:
+ log.error(
+ f"Signature {self.signature} not found in {item_location}"
+ )
+ # return_data = []
return return_data
diff --git a/src/logic/wordparser.py b/src/logic/wordparser.py
index e3741c9..4cba286 100644
--- a/src/logic/wordparser.py
+++ b/src/logic/wordparser.py
@@ -9,7 +9,7 @@ from bs4 import BeautifulSoup
from docx import Document
from src import LOG_DIR
-from src.backend import Semester
+from src.backend.semester import Semester
from src.logic.openai import name_tester, run_shortener, semester_converter
log = loguru.logger
@@ -18,7 +18,6 @@ log.add(sys.stdout, level="INFO")
log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
-
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
@@ -111,6 +110,7 @@ class SemapDocument:
else:
self.title_suggestions = []
pass
+
@property
def renameSemester(self) -> None:
if ", Dauer" in self.semester:
@@ -141,8 +141,8 @@ def word_docx_to_csv(path: str) -> list[pd.DataFrame]:
text = text.replace("\n", "")
row_data.append(text)
- if text == "Ihr Fach:":
- row_data.append(get_fach(path))
+ # if text == "Ihr Fach:":
+ # row_data.append(get_fach(path))
data.append(row_data)
df = pd.DataFrame(data)
df.columns = df.iloc[0]
@@ -265,7 +265,7 @@ def elsa_word_to_csv(path: str):
return tuple_to_dict(data, doctype), doctype
-def word_to_semap(word_path: str) -> SemapDocument:
+def word_to_semap(word_path: str, ai: bool = True) -> SemapDocument:
log.info("Parsing Word Document {}", word_path)
semap = SemapDocument()
df = word_docx_to_csv(word_path)
@@ -286,8 +286,9 @@ def word_to_semap(word_path: str) -> SemapDocument:
appdata = {keys[i]: keys[i + 1] for i in range(0, len(keys), 2)}
semap.title = appdata["Veranstaltung:"]
semap.semester = appdata["Semester:"]
- semap.renameSemester
- semap.nameSetter
+ if ai:
+ semap.renameSemester
+ semap.nameSetter
books = df[2]
booklist = []
@@ -309,7 +310,5 @@ def word_to_semap(word_path: str) -> SemapDocument:
if __name__ == "__main__":
- else_df = elsa_word_to_csv(
- "C:/Users/aky547/Desktop/ELSA_Bestellung Scann Der Westen und der Rest.docx"
- )
+ else_df = word_to_semap("C:/Users/aky547/Desktop/semap/db/temp/tmpzsz_hgdr.docx")
print(else_df)
diff --git a/src/sounds/ding.mp3 b/src/sounds/ding.mp3
new file mode 100644
index 0000000..9684c72
Binary files /dev/null and b/src/sounds/ding.mp3 differ
diff --git a/src/ui/dialogs/mail.py b/src/ui/dialogs/mail.py
index 833233a..caaf826 100644
--- a/src/ui/dialogs/mail.py
+++ b/src/ui/dialogs/mail.py
@@ -1,23 +1,21 @@
import os
import sys
+import loguru
from PySide6 import QtWidgets
-from src import Icon, settings as config
-
+from src import LOG_DIR, Icon
+from src import settings as config
from .dialog_sources.Ui_mail_preview import Ui_eMailPreview as MailPreviewDialog
from .mailTemplate import MailTemplateDialog
-import loguru
-import sys
-from src import LOG_DIR
+
log = loguru.logger
log.remove()
log.add(sys.stdout, level="INFO")
log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
-
empty_signature = """