137 lines
5.0 KiB
Python
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()
|