update logging, update docuprint add new ui for generating documents

This commit is contained in:
2025-05-09 11:57:18 +02:00
parent f7ea6f5d34
commit 468e8674ab
16 changed files with 843 additions and 187 deletions

View File

@@ -13,7 +13,7 @@ from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QThread
from PyQt6.QtGui import QRegularExpressionValidator
from src import Icon, settings
from src import Icon
from src.backend import Database, BookGrabber, AvailChecker, DocumentationThread
from src.backend.semester import Semester
from src.backend.create_file import recreateFile
@@ -41,6 +41,8 @@ from src.ui.dialogs import (
login_ui,
parsed_titles_ui,
reminder_ui,
DocumentPrintDialog,
launch,
)
from src.ui.widgets import (
ElsaDialog,
@@ -52,7 +54,7 @@ from src.ui.widgets import (
EditUser,
EditProf,
)
from src.utils import SemesterDocument
from datetime import datetime
from loguru import logger as log
@@ -259,35 +261,10 @@ class Ui(Ui_Semesterapparat):
self.valid_check_semester.clicked.connect(self.display_valid_semester) # type:ignore
def create_doc(self):
result = self.confirm_popup(
"Mit dem Klick auf Okay wird eine Übersicht aller aktiven Semesterapparate erstellt und an den FollowME Drucker gesendet. Es kann bis zu 10 Minuten dauern, bis das document im Drucker angezeigt wird",
"document erstellen?",
)
logger.debug(f"Result: {result}")
if result == 1:
# logger.debug("Creating document")
apparats = self.apparats
apps = []
for apparat in apparats:
prof = self.db.getProf(apparat[2])
data = (apparat[4], f"{prof.lastname} ({apparat[1]})")
apps.append(data)
# logger.debug(apps)
logger.info("Using apparats: {}", apps)
doc = SemesterDocument(
semester=Semester().value,
filename="Semesterapparate",
apparats=apps,
full=True,
config=settings,
)
# doc.make_document()
# doc.create_pdf()
# doc.print_document()
# doc.cleanup()
# logger.info("Document created and sent to printer")
# kill thread after execution done
logger.debug("Creating document")
# open DocumentPrintDialog
dialog = DocumentPrintDialog(self.MainWindow)
dialog.show()
def checkValidInput(self):
if valid_input == (1, 1, 1, 1, 1, 1):
@@ -812,7 +789,8 @@ class Ui(Ui_Semesterapparat):
self.tableWidget_apparat_media.currentRow(), 1
).text()
]
items = len(links)
# get the number of selected rows from the table
items = self.tableWidget_apparat_media.rowCount()
self.label_20.setText("Verfügbarkeit wird geprüft, bitte warten...")
self.label_20.show()
self.avail_status.setText(f"0/{items}")
@@ -1109,7 +1087,7 @@ class Ui(Ui_Semesterapparat):
self.update_app_media_list()
# #logger.debug(len(signatures))
def extract_document_data(self) -> Union[None, list[str], SemapDocument]:
def extract_document_data(self) -> Union[list[str], SemapDocument]:
file_type = self.document_list.item(self.document_list.currentRow(), 1).text()
file_location = self.document_list.item(
self.document_list.currentRow(), 3
@@ -1119,15 +1097,11 @@ class Ui(Ui_Semesterapparat):
logger.info("File selected: {}, {}", file_name, file_location)
if file_location == "Database":
# create warning, then return
self.confirm_popup(
"Dateien aus der Datenbank werden nicht unterstützt!",
title="Fehler",
)
return None
self.db.recreateFile(file_name, self.active_apparat, filetype=file_type)
if file_type == "pdf":
# Todo: implement parser here
self.confirm_popup("PDF Dateien werden nicht unterstützt!", title="Fehler")
return
return [""]
if file_type == "csv":
signatures = csv_to_list(file)
# add the data to the database
@@ -1151,8 +1125,14 @@ class Ui(Ui_Semesterapparat):
self.prof_tel_nr.setText(str(data.phoneNumber))
self.app_name.setText(data.title)
self.app_fach.setCurrentText(data.subject)
self.prof_title.setText(data.personTitle)
self.drpdwn_prof_name.setCurrentText(data.personName)
self.sem_year.setText("20" + data.semester.year)
def btn_check_file_threaded(self):
for runner in self.bookGrabber:
if not runner.isRunning():
runner.deleteLater()
# #logger.debug("Checking file")
# get active app_id and prof_id
self.tableWidget_apparate.setEnabled(False)
@@ -1224,7 +1204,6 @@ class Ui(Ui_Semesterapparat):
autoGrabber.start()
self.bookGrabber.append(autoGrabber)
# refresh book table
logger.debug("Finished adding media")
# end of thread
# self.autoGrabber.exit()
# self.__clear_fields()
@@ -1434,7 +1413,7 @@ class Ui(Ui_Semesterapparat):
reminder.exec()
tableposition = self.tableWidget_apparate.currentRow()
appnr = self.tableWidget_apparate.item(tableposition, 0).text()
if reminder.result() == QtWidgets.QDialogger.DialogCode.Accepted:
if reminder.result() == QtWidgets.QDialog.DialogCode.Accepted:
data = reminder.return_message()
# #logger.debug(data)
self.db.addMessage(
@@ -1473,7 +1452,7 @@ class Ui(Ui_Semesterapparat):
settingsUI = Settings(self.active_user)
settingsUI.exec()
if settingsUI.result() == QtWidgets.QDialogger.DialogCode.Accepted:
if settingsUI.result() == QtWidgets.QDialog.DialogCode.Accepted:
settingsUI.save()
# logger.debug(settings.dict())
@@ -1563,7 +1542,7 @@ class Ui(Ui_Semesterapparat):
self.confirm_popup("Keine weiteren Apparate vorhanden", title="Fehler")
return (None, None)
dialog = QtWidgets.QDialog()
dialogger.setWindowTitle(title)
dialog.setWindowTitle(title)
# add a label to the dialog
label = QtWidgets.QLabel()
label.setText(message)
@@ -1626,7 +1605,7 @@ class Ui(Ui_Semesterapparat):
widget.setWindowTitle("Metadaten")
bookedit.populate_fields(data)
widget.exec()
if widget.result() == QtWidgets.QDialogger.DialogCode.Accepted:
if widget.result() == QtWidgets.QDialog.DialogCode.Accepted:
data = bookedit.get_data()
# #logger.debug(data)
self.db.updateBookdata(bookdata=data, book_id=book_id)
@@ -1685,7 +1664,7 @@ class Ui(Ui_Semesterapparat):
framework = ApparatExtendDialog()
framework.exec()
# return data from dialog if ok is pressed
if framework.result() == QtWidgets.QDialogger.DialogCode.Accepted:
if framework.result() == QtWidgets.QDialog.DialogCode.Accepted:
data = framework.get_data()
# #logger.debug(data)
# return data