update threads

This commit is contained in:
WorldTeacher
2024-05-07 15:31:11 +02:00
parent bd0f2b9ade
commit 24eefd9473
6 changed files with 33 additions and 185 deletions

View File

@@ -12,9 +12,9 @@ from pathlib import Path
from icecream import ic
from natsort import natsorted
from omegaconf import OmegaConf
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtCore import QDate, QThread, Signal
from PySide6.QtGui import QColor, QRegularExpressionValidator
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QDate, QThread
from PyQt6.QtGui import QColor, QRegularExpressionValidator
# from src.logic.webrequest import BibTextTransformer, WebRequest
# from src.utils import documentationview
@@ -26,9 +26,8 @@ from src.backend.semester import generateSemesterByDate
from src.logic import AvailChecker, BookGrabber, c_sort
from src.logic.constants import APP_NRS, PROF_TITLES
from src.logic.csvparser import csv_to_list
from src.logic.dataclass import ApparatData, BookData, MailData, Subjects
from src.logic.dataclass import ApparatData, BookData
from src.logic.log import MyLogger
from src.logic.threads import MailThread
from src.logic.wordparser import word_docx_to_csv
from src.ui import ( # Mail_Dialog,
App_Ext_Dialog,
@@ -45,143 +44,10 @@ from src.ui import ( # Mail_Dialog,
reminder_ui,
settings_ui,
)
from src.ui.dialogs.Ui_mail_preview import Ui_eMailPreview as Ui_Dialog
config = OmegaConf.load("config.yaml")
# class Mail_Dialog(QtWidgets.QDialog, Ui_Dialog):
# def __init__(
# self,
# app_id,
# app_name,
# app_subject,
# prof_name,
# prof_mail,
# parent=None,
# default_mail="Information zum Semesterapparat {AppNr} - {AppName}.eml",
# ):
# super().__init__(parent)
# self.setupUi(
# self,
# # app_id,
# # app_name,
# # app_subject,
# # prof_name,
# )
# self.appid = app_id
# self.appname = app_name
# self.subject = app_subject
# self.profname = prof_name
# self.mail_data = ""
# self.prof_mail = prof_mail
# self.comboBox.currentIndexChanged.connect(self.set_mail)
# self.prof_name.setText(prof_name)
# self.mail_name.setText(self.prof_mail)
# # self.load_mail_templates()
# # if default_mail is not None:
# # # get the nearest match to the default mail
# # for i in range(self.comboBox.count()):
# # if default_mail in self.comboBox.itemText(i):
# # default_mail = self.comboBox.itemText(i)
# # break
# # self.comboBox.setCurrentText(default_mail)
# self.gender_female.clicked.connect(self.set_mail)
# self.gender_male.clicked.connect(self.set_mail)
# self.gender_non.clicked.connect(self.set_mail)
# self.buttonBox.accepted.connect(self.createAndSendMail)
# print(self.appid, self.appname, self.subject, self.profname, self.prof_mail)
# # self.send_button.clicked.connect(self.save_mail)
# # def set_data(self, data: dict):
# # print(data)
# # self.prof_name.setText(data["prof_name"])
# # self.mail_name.setText(data["mail_name"])
# # # assign data["general"] to self.data
# # self.data = data["general"]
# def load_mail_templates(self):
# print("loading mail templates")
# mail_templates = os.listdir("mail_vorlagen")
# for template in mail_templates:
# self.comboBox.addItem(template)
# def add_data(self, app_id, app_name, subject, prof_name, prof_mail):
# self.appid = app_id
# self.appname = app_name
# self.subject = subject
# self.profname = prof_name
# self.prof_mail = prof_mail
# self.prof_name.setText(prof_name)
# self.mail_name.setText(prof_mail)
# self.load_mail_templates()
# def get_greeting(self):
# if self.gender_male.isChecked():
# return "Sehr geehrter Herr"
# elif self.gender_female.isChecked():
# return "Sehr geehrte Frau"
# elif self.gender_non.isChecked():
# return "Guten Tag"
# def set_mail(self):
# email_template = self.comboBox.currentText()
# if email_template == "":
# return
# with open(f"mail_vorlagen/{email_template}", "r", encoding="utf-8") as f:
# mail_template = f.read()
# email_header = email_template.split(".eml")[0]
# if "{AppNr}" in email_template:
# email_header = email_template.split(".eml")[0]
# email_header = email_header.format(AppNr=self.appid, AppName=self.appname)
# self.mail_header.setText(email_header)
# self.mail_data = mail_template.split("<html>")[0]
# mail_html = mail_template.split("<html>")[1]
# mail_html = "<html>" + mail_html
# Appname = self.appname
# mail_html = mail_html.format(
# Profname=self.prof_name.text().split(" ")[-1],
# Appname=Appname,
# AppNr=self.appid,
# AppSubject=self.subject,
# greeting=self.get_greeting(),
# )
# self.mail_body.setHtml(mail_html)
# def createAndSendMail(self):
# import smtplib
# import ssl
# from email.mime.multipart import MIMEMultipart
# from email.mime.text import MIMEText
# smtp_server = config["mail"]["smtp_server"]
# port: int = config["mail"]["port"]
# sender_email = config["mail"]["sender"]
# password = config["mail"]["password"]
# message = MIMEMultipart()
# message["From"] = sender_email
# message["To"] = self.prof_mail
# message["Subject"] = self.mail_header.text()
# mail_body = self.mail_body.toHtml()
# message.attach(MIMEText(mail_body, "html"))
# mail = message.as_string()
# server = smtplib.SMTP_SSL(smtp_server, port)
# # server.starttls()
# # server.auth(mechanism="PLAIN")
# if config["mail"]["use_user_name"] == 1:
# print(config["mail"]["user_name"])
# server.login(config["mail"]["user_name"], password)
# else:
# server.login(sender_email, password)
# server.sendmail(sender_email, self.prof_mail, mail)
# print("Mail sent")
# # end active process
# server.quit()
class Medien(medienadder_ui):
def __init__(self) -> None:
self.logger = MyLogger("Medien")
@@ -197,25 +63,7 @@ class Medien(medienadder_ui):
return self.comboBox.currentText()
# class Setup(SetupWizard):
# def __init__(self, MainWindow):
# super().__init__()
# self.setupUi(MainWindow)
# self.settings = Settings()
# self.setWindowTitle("Semesterapparatsmanagement Setup")
# self.btn_save_path_select.clicked.connect(self.select_save_path)
# # self.setWindowIcon(QtGui.QIcon("ui\icon.png"))
# def select_save_path(self) -> None:
# # open a dialog to select a save path
# dialog = QtWidgets.QFileDialog()
# dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
# dialog.setOption(QtWidgets.QFileDialog.Option.ShowDirsOnly)
# dialog.exec()
# self.settings.save_path = dialog.selectedFiles()[0]
# self.save_path.setText(self.settings.save_path)
# self.settings.save_settings()
class MyComboBox(QtWidgets.QComboBox):
def __init__(self, parent=None):
@@ -474,7 +322,7 @@ class Ui(Ui_Semesterapparat):
"title": title if title != "" else None,
}
params = {key: value for key, value in params.items() if value is not None}
ic(params)
#ic(params)
retdata = self.db.searchBook(params)
if retdata is None:
return
@@ -530,7 +378,7 @@ class Ui(Ui_Semesterapparat):
password = self.user_create_frame_password.text()
role = self.user_frame_userrole.currentText()
if self.db.checkUsername(username):
ic("username already exists")
#ic("username already exists")
# self.user_create_frame_error.setText("Der Nutzername ist bereits vergeben")#TODO: implement error message
return
userdata = AdminCommands().create_password(password)
@@ -554,8 +402,8 @@ class Ui(Ui_Semesterapparat):
)
self.user_delete_confirm.setChecked(False)
else:
# self.user_delete_err_message.setText("Bitte bestätigen Sie die Löschung des Nutzers") # TODO: implement error message
ic("please confirm the deletion of the user")
self.user_delete_err_message.setText("Bitte bestätigen Sie die Löschung des Nutzers") # TODO: implement error message
#ic("please confirm the deletion of the user")
def update_user_data(self):
username = self.user_edit_frame_user_select.currentText()
@@ -600,8 +448,8 @@ class Ui(Ui_Semesterapparat):
olddata = self.db.getFacultyMember(
self.edit_faculty_member_select_member.currentText()
)
data = olddata[0]
ic(olddata)
data = olddata
oldlname = data[2]
oldfname = data[1]
# take data except first and last entry
@@ -626,8 +474,8 @@ class Ui(Ui_Semesterapparat):
.strip()
)
fullname = __gen_fullname(fname, lname, data)
mail = self.user_faculty_member_new_telnr.text()
telnr = self.user_faculty_member_new_mail.text()
telnr = self.user_faculty_member_new_telnr.text()
mail = self.user_faculty_member_new_mail.text()
new_data = {
"titel": titel,
"fname": fname,
@@ -994,7 +842,7 @@ class Ui(Ui_Semesterapparat):
def populate_frame(self, appdata: ApparatData):
# populate the frame with the data from the database
ic(appdata)
#ic(appdata)
self.drpdwn_app_nr.setCurrentText(str(appdata.appnr))
self.prof_title.setText(appdata.prof_title)
prof_name = appdata.profname.split(" ")
@@ -1204,7 +1052,7 @@ class Ui(Ui_Semesterapparat):
return
selected_prof = self.drpdwn_prof_name.currentText()
data = self.db.getProfData(selected_prof)
ic(data)
#ic(data)
prof_title = data[2]
if prof_title == "None":
prof_title = "Kein Titel"
@@ -1739,7 +1587,7 @@ class Ui(Ui_Semesterapparat):
]
signatures = [i for i in signatures if i != ""]
ic(signatures)
#ic(signatures)
print("starting thread")
self.autoGrabber = BookGrabber(
mode="ARRAY", app_id=app_id, prof_id=prof_id, data=signatures
@@ -1870,7 +1718,7 @@ class Ui(Ui_Semesterapparat):
self.old_apparats = self.apparats
def insert_apparat_into_table(self, apparat):
ic(apparat)
#ic(apparat)
def __dauer_check(apparat):
return "Ja" if apparat[7] == 1 else "Nein"
@@ -2269,5 +2117,6 @@ if __name__ == "__main__":