test: rework contact functionality

This commit is contained in:
WorldTeacher
2024-06-20 09:02:45 +02:00
parent 199f32168d
commit 5348dadf33

View File

@@ -13,7 +13,6 @@ from omegaconf import OmegaConf
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QDate, QThread from PyQt6.QtCore import QDate, QThread
from PyQt6.QtGui import QRegularExpressionValidator from PyQt6.QtGui import QRegularExpressionValidator
import yaml
from src import Icon from src import Icon
from src.backend import ( from src.backend import (
@@ -126,6 +125,7 @@ class Ui(Ui_Semesterapparat):
# Actions # Actions
self.actionEinstellungen.triggered.connect(self.open_settings) self.actionEinstellungen.triggered.connect(self.open_settings)
Icon("settings", self.actionEinstellungen)
self.actionDokumentation.triggered.connect(self.open_documentation) self.actionDokumentation.triggered.connect(self.open_documentation)
Icon("offAction", self.actionBeenden) Icon("offAction", self.actionBeenden)
self.actionBeenden.triggered.connect(self.quit) self.actionBeenden.triggered.connect(self.quit)
@@ -525,7 +525,7 @@ class Ui(Ui_Semesterapparat):
try: try:
self.elsa_statistics.removeTab(1) self.elsa_statistics.removeTab(1)
except: except:
pass self.logger.log_debug("No tab to remove")
self.elsa_table.setRowCount(0) self.elsa_table.setRowCount(0)
elsa_apparats = self.db.getElsaApparats() elsa_apparats = self.db.getElsaApparats()
elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True) elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True)
@@ -1627,7 +1627,7 @@ class Ui(Ui_Semesterapparat):
if self.check_send_mail.isChecked(): if self.check_send_mail.isChecked():
self.contact_prof( self.contact_prof(
apparat=appd.appnr, mail="Information zum Semesterapparat" apparat=appd.appnr, mail="Information zum Semesterapparat", location=""
) )
if clear_fields: if clear_fields:
self.__clear_fields() self.__clear_fields()
@@ -1712,8 +1712,14 @@ class Ui(Ui_Semesterapparat):
remind_action = menu.addAction("Erinnerung") remind_action = menu.addAction("Erinnerung")
menu.addAction(extend_action) menu.addAction(extend_action)
menu.addActions([contact_action, delete_action, remind_action]) menu.addActions([contact_action, delete_action, remind_action])
# convert point to row and column
row = self.tableWidget_apparate.rowAt(position.y())
column = self.tableWidget_apparate.columnAt(position.x())
pos = (str(row), str(column))
ic(pos)
extend_action.triggered.connect(self.extend_apparat) extend_action.triggered.connect(self.extend_apparat)
delete_action.triggered.connect(self.delete_apparat) delete_action.triggered.connect(lambda: self.delete_apparat(pos))
# pass pos to contact_prof
contact_action.triggered.connect(self.contact_prof) contact_action.triggered.connect(self.contact_prof)
remind_action.triggered.connect(self.reminder) remind_action.triggered.connect(self.reminder)
menu.exec(self.tableWidget_apparate.mapToGlobal(position)) menu.exec(self.tableWidget_apparate.mapToGlobal(position))
@@ -1858,7 +1864,7 @@ class Ui(Ui_Semesterapparat):
if state == 1: if state == 1:
self.db.deleteBook(book_id) self.db.deleteBook(book_id)
self.update_app_media_list() self.update_app_media_list()
self.contact_prof(mail="deleted") self.contact_prof(mail="deleted", location="")
pass pass
else: else:
# get all selected rows # get all selected rows
@@ -1903,8 +1909,46 @@ class Ui(Ui_Semesterapparat):
else: else:
return return
def contact_prof(self, apparat=None, mail=""): def __get_table_data_field(self, table, row, column):
ic(row, column)
row = int(row)
return table.item(row, column).text()
def __contact_dialog(self, apparat, location: tuple | str, mail=None, pid=""):
ic(location, pid)
active_apparat_id = (
self.drpdwn_app_nr.currentText() if apparat is None else apparat
)
print(active_apparat_id)
profname = self.drpdwn_prof_name.currentText().replace(",", "").split(" ")
profname = f"{profname[1]} {profname[0]}"
# get the row of the clicked cell
prof_id = self.db.getProfId(pid)
if profname == "Name Kein":
profname = pid
profname = f"{profname.split(" ")[1]} {profname.split(" ")[0]}"
if prof_id:
pmail = self.db.getSpecificProfData(prof_id, ["mail"])
else:
pmail = self.prof_mail.text()
# create a new thread to show the mail interface and send the mail
print("showing mail dialog")
self.mail_thread = Mail_Dialog(
app_id=active_apparat_id,
prof_name=pid,
prof_mail=pmail,
app_name=self.app_name.text(),
app_subject=self.app_fach.currentText(),
default_mail=mail if mail != "" else "Information zum Semesterapparat",
)
self.mail_thread.show()
def contact_prof(self, location="", apparat=None, mail="", pid=""):
print(apparat) print(apparat)
print("location", location)
if self.active_apparat == "": if self.active_apparat == "":
if apparat is False: if apparat is False:
self.confirm_popup( self.confirm_popup(
@@ -1912,35 +1956,18 @@ class Ui(Ui_Semesterapparat):
) )
return return
else: else:
# TODO: stuff self.__contact_dialog(apparat, location, mail, pid=pid)
pass
else: else:
if apparat: self.__contact_dialog(apparat, mail=mail, pid=pid, location=location)
active_apparat_id = apparat
else:
active_apparat_id = self.drpdwn_app_nr.currentText()
print(active_apparat_id)
profname = self.drpdwn_prof_name.currentText().replace(",", "").split(" ")
profname = f"{profname[1]} {profname[0]}"
prof_id = self.db.getProfId(self.drpdwn_prof_name.currentText())
pmail = self.db.getSpecificProfData(prof_id, ["mail"])
# create a new thread to show the mail interface and send the mail
self.mail_thread = Mail_Dialog(
app_id=active_apparat_id,
prof_name=profname,
prof_mail=pmail,
app_name=self.app_name.text(),
app_subject=self.app_fach.currentText(),
)
self.mail_thread.show()
def delete_apparat(self): def delete_apparat(self, position):
selected_apparat_id = self.tableWidget_apparate.item( selected_apparat_id = self.tableWidget_apparate.item(
self.tableWidget_apparate.currentRow(), 0 self.tableWidget_apparate.currentRow(), 0
).text() ).text()
message = f"Soll der Apparat {selected_apparat_id} wirklich gelöscht werden?" message = f"Soll der Apparat {selected_apparat_id} wirklich gelöscht werden?"
state = self.confirm_popup(message) state = self.confirm_popup(message, title="Löschen?")
print(state) print(state)
pid = self.__get_table_data_field(self.tableWidget_apparate, position[0], 2)
if state == 1: if state == 1:
self.db.deleteApparat(selected_apparat_id, generateSemesterByDate()) self.db.deleteApparat(selected_apparat_id, generateSemesterByDate())
# delete the corresponding entry from self.apparats # delete the corresponding entry from self.apparats
@@ -1953,7 +1980,7 @@ class Ui(Ui_Semesterapparat):
# remove the row from the table # remove the row from the table
self.tableWidget_apparate.removeRow(self.tableWidget_apparate.currentRow()) self.tableWidget_apparate.removeRow(self.tableWidget_apparate.currentRow())
# send mail to prof # send mail to prof
self.contact_prof(mail="deleted", apparat=selected_apparat_id) self.contact_prof(mail="deleted", apparat=selected_apparat_id, pid=pid)
# if state==QtWidgets.QDialog.DialogCode.Accepted: # if state==QtWidgets.QDialog.DialogCode.Accepted:
# self.db.delete_apparat(selected_apparat_id) # self.db.delete_apparat(selected_apparat_id)
# pass # pass