changes + bugfix
change logger code add functionality to detect correct deletable semaps based on semester data
This commit is contained in:
@@ -22,6 +22,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.logger = MyLogger("SearchStatisticPage")
|
self.logger = MyLogger("SearchStatisticPage")
|
||||||
|
self.logger.log_info("SearchStatisticPage started")
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.setupUi(self)
|
self.setupUi(self)
|
||||||
self.book_search_result.horizontalHeader().setSectionResizeMode(
|
self.book_search_result.horizontalHeader().setSectionResizeMode(
|
||||||
@@ -46,6 +47,8 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
self.tableWidget.resizeColumnsToContents()
|
self.tableWidget.resizeColumnsToContents()
|
||||||
self.tableWidget.resizeRowsToContents()
|
self.tableWidget.resizeRowsToContents()
|
||||||
self.db = Database()
|
self.db = Database()
|
||||||
|
self.box_appnrs.addItems(str(i) for i in self.db.getUnavailableApparatNumbers())
|
||||||
|
|
||||||
self.populate_tab()
|
self.populate_tab()
|
||||||
|
|
||||||
def restore_apparat(self):
|
def restore_apparat(self):
|
||||||
@@ -148,11 +151,13 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
for i in range(rows):
|
for i in range(rows):
|
||||||
self.statistics_table.setRowHeight(i, rowheight)
|
self.statistics_table.setRowHeight(i, rowheight)
|
||||||
|
|
||||||
|
def __table_or_graph(self):
|
||||||
|
return self.tabWidget_3.currentIndex()
|
||||||
|
|
||||||
def gridchange(self):
|
def gridchange(self):
|
||||||
print("gridchange")
|
print("gridchange")
|
||||||
if self.check_deletable.isChecked():
|
if self.check_deletable.isChecked():
|
||||||
self.box_semester.setEnabled(False)
|
self.box_semester.setEnabled(False)
|
||||||
self.box_semester.clear()
|
|
||||||
self.box_appnrs.setEnabled(False)
|
self.box_appnrs.setEnabled(False)
|
||||||
self.box_appnrs.clear()
|
self.box_appnrs.clear()
|
||||||
self.box_person.setEnabled(False)
|
self.box_person.setEnabled(False)
|
||||||
@@ -163,6 +168,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
self.box_erstellsemester.clear()
|
self.box_erstellsemester.clear()
|
||||||
self.box_dauerapp.setEnabled(False)
|
self.box_dauerapp.setEnabled(False)
|
||||||
self.box_dauerapp.clear()
|
self.box_dauerapp.clear()
|
||||||
|
self.populate_tab(self.__table_or_graph())
|
||||||
else:
|
else:
|
||||||
self.box_semester.setEnabled(True)
|
self.box_semester.setEnabled(True)
|
||||||
self.box_appnrs.setEnabled(True)
|
self.box_appnrs.setEnabled(True)
|
||||||
@@ -172,6 +178,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
self.box_dauerapp.setEnabled(True)
|
self.box_dauerapp.setEnabled(True)
|
||||||
|
|
||||||
def populate_tab(self, table_or_graph=0):
|
def populate_tab(self, table_or_graph=0):
|
||||||
|
self.logger.log_info("populate_tab started")
|
||||||
# add default values to the dropdowns
|
# add default values to the dropdowns
|
||||||
self.box_appnrs.clear()
|
self.box_appnrs.clear()
|
||||||
self.box_appnrs.addItem("")
|
self.box_appnrs.addItem("")
|
||||||
@@ -201,6 +208,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
self.box_fach.addItems(subject[1] for subject in self.db.getSubjects())
|
self.box_fach.addItems(subject[1] for subject in self.db.getSubjects())
|
||||||
semester = self.db.getSemersters()
|
semester = self.db.getSemersters()
|
||||||
self.box_erstellsemester.addItems(semester)
|
self.box_erstellsemester.addItems(semester)
|
||||||
|
self.box_semester.addItems(semester)
|
||||||
self.statistics_table.setRowCount(0)
|
self.statistics_table.setRowCount(0)
|
||||||
|
|
||||||
# set data for table and graph in tab 2 tableWidget_3
|
# set data for table and graph in tab 2 tableWidget_3
|
||||||
@@ -233,9 +241,9 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
# place the graph into tabWidget_3
|
# place the graph into tabWidget_3
|
||||||
self.tabWidget_3.addTab(graph, "Graph")
|
self.tabWidget_3.addTab(graph, "Graph")
|
||||||
self.tabWidget_3.setCurrentIndex(table_or_graph)
|
self.tabWidget_3.setCurrentIndex(table_or_graph)
|
||||||
|
self.logger.log_info("populate_tab finished")
|
||||||
|
|
||||||
def delete_selected_apparats(self):
|
def delete_selected_apparats(self):
|
||||||
table_or_graph = self.tabWidget_3.currentIndex()
|
|
||||||
# get all selected apparats
|
# get all selected apparats
|
||||||
selected_apparats = []
|
selected_apparats = []
|
||||||
selected_apparat_rows = []
|
selected_apparat_rows = []
|
||||||
@@ -245,6 +253,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
selected_apparat_rows.append(i)
|
selected_apparat_rows.append(i)
|
||||||
# delete all selected apparats
|
# delete all selected apparats
|
||||||
# print(selected_apparats)
|
# print(selected_apparats)
|
||||||
|
self.logger.log_info(f"Deleting apparats: {selected_apparats}")
|
||||||
for apparat in selected_apparats:
|
for apparat in selected_apparats:
|
||||||
self.db.deleteApparat(apparat, generateSemesterByDate())
|
self.db.deleteApparat(apparat, generateSemesterByDate())
|
||||||
for row in selected_apparat_rows:
|
for row in selected_apparat_rows:
|
||||||
@@ -252,11 +261,12 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
for j in range(5):
|
for j in range(5):
|
||||||
self.tableWidget.item(row, j).setBackground(QtGui.QColor(235, 74, 71))
|
self.tableWidget.item(row, j).setBackground(QtGui.QColor(235, 74, 71))
|
||||||
# refresh the table
|
# refresh the table
|
||||||
self.populate_tab(table_or_graph)
|
self.populate_tab(self.__table_or_graph())
|
||||||
self.btn_del_select_apparats.setEnabled(False)
|
self.btn_del_select_apparats.setEnabled(False)
|
||||||
|
|
||||||
def statistics(self):
|
def statistics(self):
|
||||||
"""Generate the statistics based on the selected filters."""
|
"""Generate the statistics based on the selected filters."""
|
||||||
|
active_semseter = generateSemesterByDate()
|
||||||
self.db_err_message.setText("")
|
self.db_err_message.setText("")
|
||||||
self.btn_del_select_apparats.setEnabled(True)
|
self.btn_del_select_apparats.setEnabled(True)
|
||||||
self.btn_notify_for_deletion.setEnabled(True)
|
self.btn_notify_for_deletion.setEnabled(True)
|
||||||
@@ -284,7 +294,9 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
"dauer": (
|
"dauer": (
|
||||||
"1"
|
"1"
|
||||||
if self.box_dauerapp.currentText() == "Ja"
|
if self.box_dauerapp.currentText() == "Ja"
|
||||||
else "0" if self.box_dauerapp.currentText() == "Nein" else None
|
else "0"
|
||||||
|
if self.box_dauerapp.currentText() == "Nein"
|
||||||
|
else None
|
||||||
),
|
),
|
||||||
"endsemester": (
|
"endsemester": (
|
||||||
self.box_semester.currentText()
|
self.box_semester.currentText()
|
||||||
@@ -292,7 +304,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
else None
|
else None
|
||||||
),
|
),
|
||||||
"deletable": "True" if self.check_deletable.isChecked() else None,
|
"deletable": "True" if self.check_deletable.isChecked() else None,
|
||||||
"deletesemester": generateSemesterByDate(),
|
"deletesemester": active_semseter,
|
||||||
}
|
}
|
||||||
params = {
|
params = {
|
||||||
key: value for key, value in params.items() if value is not None
|
key: value for key, value in params.items() if value is not None
|
||||||
@@ -300,27 +312,52 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
params = {
|
params = {
|
||||||
key: value for key, value in params.items() if value != "Alle"
|
key: value for key, value in params.items() if value != "Alle"
|
||||||
} # remove empty lines to prevent errors
|
} # remove empty lines to prevent errors
|
||||||
|
print(params)
|
||||||
result = self.db.statistic_request(**params)
|
result = self.db.statistic_request(**params)
|
||||||
# add QTableWidgetItems to the table
|
# add QTableWidgetItems to the table
|
||||||
self.tableWidget.setRowCount(len(result))
|
# self.tableWidget.setRowCount(len(result))
|
||||||
if len(result) == 0:
|
if len(result) == 0:
|
||||||
self.db_err_message.setText("Keine Ergebnisse gefunden")
|
self.db_err_message.setText("Keine Ergebnisse gefunden")
|
||||||
return
|
return
|
||||||
for i in range(len(result)):
|
data = []
|
||||||
|
sem_year = active_semseter.split(" ")[1]
|
||||||
|
sem_time = active_semseter.split(" ")[0]
|
||||||
|
if sem_time == "WiSe":
|
||||||
|
sem_year = int(sem_year.split("/")[0])
|
||||||
|
else:
|
||||||
|
sem_year = int(sem_year)
|
||||||
|
print(sem_year)
|
||||||
|
for entry in result:
|
||||||
|
if "deletable" in params.keys():
|
||||||
|
entry_sem_time = entry[5].split(" ")[0]
|
||||||
|
entry_sem_year = entry[5].split(" ")[1]
|
||||||
|
if entry_sem_time == "SoSe":
|
||||||
|
entry_sem_year = int(entry_sem_year)
|
||||||
|
if (entry_sem_year < sem_year) or (
|
||||||
|
sem_time == "WiSe" and entry_sem_year == sem_year
|
||||||
|
):
|
||||||
|
data.append(entry)
|
||||||
|
else:
|
||||||
|
entry_sem_year = int(entry_sem_year.split("/")[0])
|
||||||
|
if entry_sem_year < sem_year:
|
||||||
|
data.append(entry)
|
||||||
|
else:
|
||||||
|
data.append(entry)
|
||||||
|
self.tableWidget.setRowCount(len(data))
|
||||||
|
for i in range(len(data)):
|
||||||
|
print("adding", data[i][1])
|
||||||
# set the items 0 = clickable checkbox, 1 = appname, 2 = profname, 3 = fach
|
# set the items 0 = clickable checkbox, 1 = appname, 2 = profname, 3 = fach
|
||||||
self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(""))
|
self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(""))
|
||||||
self.tableWidget.setItem(i, 1, QtWidgets.QTableWidgetItem(result[i][1]))
|
self.tableWidget.setItem(i, 1, QtWidgets.QTableWidgetItem(data[i][1]))
|
||||||
self.tableWidget.setItem(
|
self.tableWidget.setItem(i, 2, QtWidgets.QTableWidgetItem(str(data[i][4])))
|
||||||
i, 2, QtWidgets.QTableWidgetItem(str(result[i][4]))
|
self.tableWidget.setItem(i, 3, QtWidgets.QTableWidgetItem(data[i][2]))
|
||||||
)
|
self.tableWidget.setItem(i, 4, QtWidgets.QTableWidgetItem(data[i][3]))
|
||||||
self.tableWidget.setItem(i, 3, QtWidgets.QTableWidgetItem(result[i][2]))
|
|
||||||
self.tableWidget.setItem(i, 4, QtWidgets.QTableWidgetItem(result[i][3]))
|
|
||||||
# replace the 0 with a checkbox
|
# replace the 0 with a checkbox
|
||||||
checkbox = QtWidgets.QCheckBox()
|
checkbox = QtWidgets.QCheckBox()
|
||||||
checkbox.setChecked(False)
|
checkbox.setChecked(False)
|
||||||
self.tableWidget.setCellWidget(i, 0, checkbox)
|
self.tableWidget.setCellWidget(i, 0, checkbox)
|
||||||
# if i[9] is 1, set the background of the row to red
|
# if i[9] is 1, set the background of the row to red
|
||||||
if int(result[i][9]) == 1:
|
if int(data[i][9]) == 1:
|
||||||
for j in range(5):
|
for j in range(5):
|
||||||
self.tableWidget.item(i, j).setBackground(QtGui.QColor(235, 74, 71))
|
self.tableWidget.item(i, j).setBackground(QtGui.QColor(235, 74, 71))
|
||||||
# disable the checkbox
|
# disable the checkbox
|
||||||
@@ -329,6 +366,11 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
|
|||||||
self.tableWidget.cellWidget(i, 0).setToolTip(
|
self.tableWidget.cellWidget(i, 0).setToolTip(
|
||||||
"Dieser Semesterapparat kann nicht gelöscht werden, da er bereits gelöscht wurde"
|
"Dieser Semesterapparat kann nicht gelöscht werden, da er bereits gelöscht wurde"
|
||||||
)
|
)
|
||||||
|
# # remove empty rows
|
||||||
|
for row in range(self.tableWidget.rowCount()):
|
||||||
|
print(row, self.tableWidget.item(row, 1))
|
||||||
|
if self.tableWidget.item(row, 1) is None:
|
||||||
|
self.tableWidget.removeRow(row)
|
||||||
|
|
||||||
def display_detailed_data(self):
|
def display_detailed_data(self):
|
||||||
selected_semester = self.statistics_table.item(
|
selected_semester = self.statistics_table.item(
|
||||||
|
|||||||
Reference in New Issue
Block a user