Files
SemesterapparatsManager/src/ui/widgets/admin_edit_prof.py

137 lines
5.0 KiB
Python

import sys
import loguru
from PySide6 import QtWidgets
from src import LOG_DIR
from src.database import Database
from src.core.models import Prof
from .widget_sources.admin_edit_prof_ui import Ui_Dialog #
log = loguru.logger
log.remove()
log.add(sys.stdout, level="INFO")
log.add(f"{LOG_DIR}/application.log", rotation="1 MB", retention="10 days")
class EditProf(QtWidgets.QDialog, Ui_Dialog):
def __init__(self):
super(EditProf, self).__init__()
self.setupUi(self)
# Variables
self.db = Database()
self.edit_faculty_member_select_member.currentTextChanged.connect(
self.edit_faculty_member_set_data
)
self.update_faculty_member.clicked.connect(self.edit_faculty_member_action)
self.gather_data()
def gather_data(self):
self.add_faculty_member_data()
apparats = self.db.getApparatsByProf(
self.db.getProfId(
Prof(fullname=self.edit_faculty_member_select_member.currentText())
)
)
if len(apparats) == 0:
self.delete_faculty_member.setEnabled(True)
for apparat in apparats:
if apparat.deleted == 0:
self.delete_faculty_member.setEnabled(False)
self.delete_faculty_member.setToolTip(
"Professoren mit Apparaten können nicht gelöscht werden"
)
break
def add_faculty_member_data(self):
faculty_members = self.db.getFacultyMembers()
names = [f"{member[5]}" for member in faculty_members]
self.edit_faculty_member_select_member.clear()
self.edit_faculty_member_select_member.addItems(names)
self.edit_faculty_member_select_member.addItem("")
self.edit_faculty_member_select_member.setCurrentText("")
def edit_faculty_member_set_data(self):
# get the selected member
name = self.edit_faculty_member_select_member.currentText()
fullname = name.replace(",", "")
# #print(fullname, name)
# get the data for the selected member
data = self.db.getProfByName(fullname)
# set the data
# #print(data)
if data is None:
self.edit_faculty_member_title.setText("")
self.faculty_member_old_telnr.setText("")
self.faculty_member_oldmail.setText("")
self.edit_faculty_member_title.setText("")
else:
self.faculty_member_old_telnr.setText(data.telnr)
self.faculty_member_oldmail.setText(data.mail)
log.debug(data)
(
self.edit_faculty_member_title.setText(data.title)
if data.title is not None
else self.edit_faculty_member_title.setText("")
)
def edit_faculty_member_action(self):
def __gen_fullname(fname, lname, data):
if fname == "" and lname == "":
return data[0]
if fname == "" and lname != "":
return f"{lname} {data[1]}"
if fname != "" and lname == "":
return f"{data[2]} {fname}"
if fname != "" and lname != "":
return f"{lname} {fname}"
# get the data and use new value if it is not none and does not mach the old value
if self.edit_faculty_member_select_member.currentText() == "":
return
olddata = self.db.getProfByName(
self.edit_faculty_member_select_member.currentText()
)
log.debug(olddata)
data = olddata
oldlname = data.lastname
oldfname = data.firstname
# take data except first and last entry
titel = (
self.edit_faculty_member_new_title.text()()
if self.edit_faculty_member_new_title.text() != ""
else None
)
fname = (
self.edit_faculty_member_new_surname.text()
if self.edit_faculty_member_new_surname.text() != ""
else self.edit_faculty_member_select_member.currentText().strip()
)
lname = (
self.user_faculty_member_new_name.text()
if self.user_faculty_member_new_name.text() != ""
else self.edit_faculty_member_select_member.currentText().strip()
)
fullname = __gen_fullname(fname, lname, data)
telnr = self.user_faculty_member_new_telnr.text()
mail = self.user_faculty_member_new_mail.text()
new_data = {
"titel": titel,
"fname": fname,
"lname": lname,
"fullname": fullname,
"mail": mail,
"telnr": telnr,
}
new_data = {key: value for key, value in new_data.items() if value != ""}
self.db.updateFacultyMember(data=new_data, oldlname=oldlname, oldfname=oldfname)
self.add_faculty_member_data()
self.edit_faculty_member_new_title.setText("")
self.edit_faculty_member_new_surname.clear()
self.user_faculty_member_new_name.clear()
self.user_faculty_member_new_telnr.clear()
self.user_faculty_member_new_mail.clear()