fix broken files after faulty update

This commit is contained in:
2025-01-14 08:51:58 +01:00
parent 598da9bfac
commit 997d618ff1
102 changed files with 2499 additions and 548 deletions

View File

@@ -1,31 +1,28 @@
from .widget_sources.Ui_search_statistic_page import Ui_Dialog
from PyQt6 import QtWidgets, QtGui, QtCore
from PyQt6.QtCore import pyqtSignal
from src.backend import Database, generateSemesterByDate
from src.logic import custom_sort, Prof
from src import MyLogger
from src.backend import Database, Semester
from src import logger
from src.logic import custom_sort, Prof, sort_semesters_list
from src.ui import ApparatExtendDialog
from src.ui.dialogs import Mail_Dialog
from src.ui.widgets import DataGraph, StatusWidget
from natsort import natsorted
from icecream import ic
class MyComboBox(QtWidgets.QComboBox):
def __init__(self, parent=None):
super().__init__(parent)
class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
apparat_open = pyqtSignal(str)
reloadSignal = pyqtSignal()
refreshSignal = pyqtSignal()
def __init__(self):
self.logger = MyLogger("SearchStatisticPage")
self.logger.log_info("SearchStatisticPage started")
logger.info("SearchStatisticPage started")
super().__init__()
self.setupUi(self)
self.book_search_result.horizontalHeader().setSectionResizeMode(
@@ -51,7 +48,14 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.tableWidget.resizeRowsToContents()
self.db = Database()
self.box_appnrs.addItems(str(i) for i in self.db.getUnavailableApparatNumbers())
self.splitter = QtWidgets.QSplitter(QtCore.Qt.Orientation.Horizontal)
# insert splitter in apparatResult to allow resizing of the columns
self.splitter.addWidget(self.app_results)
self.splitter.addWidget(self.stats)
self.apparatResult.layout().removeWidget(self.stats)
self.apparatResult.layout().removeWidget(self.app_results)
self.apparatResult.layout().addWidget(self.splitter)
self.semester = Semester().value
self.populate_tab()
def restore_apparat(self):
@@ -90,15 +94,15 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
extend.exec()
if extend.result() == QtWidgets.QDialog.DialogCode.Accepted:
data = extend.get_data()
ic(data)
logger.debug(data)
app_name = self.tableWidget.item(self.tableWidget.currentRow(), 1).text()
app_id = self.db.getApparatId(app_name)
self.db.setNewSemesterDate(app_id, data["semester"], data["dauerapp"])
#remove the row
# remove the row
self.tableWidget.removeRow(self.tableWidget.currentRow())
self.refreshSignal.emit()
def tabW2_changed(self):
def tabW2_changed(self):
if self.tabWidget_2.currentIndex() == 0:
self.stackedWidget_4.setCurrentIndex(0)
else:
@@ -113,12 +117,11 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
"title": title if title != "" else None,
}
params = {key: value for key, value in params.items() if value is not None}
# ic(params)
logger.debug(params)
retdata = self.db.searchBook(params)
if retdata is None:
return
for book in retdata:
self.book_search_result.insertRow(0)
self.book_search_result.setItem(
0, 0, QtWidgets.QTableWidgetItem(book[0].title)
@@ -145,10 +148,9 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
selected_apparats.append(data)
# delete all selected apparats
ic(selected_apparats)
logger.debug(selected_apparats)
dialogs = []
for i in selected_apparats:
app_id = i["app_id"]
app_name = i["app_name"]
prof_name = i["prof_name"]
@@ -206,7 +208,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.box_dauerapp.setEnabled(True)
def populate_tab(self, table_or_graph=0):
self.logger.log_info("populate_tab started")
logger.info("populate_tab started")
# add default values to the dropdowns
self.box_appnrs.clear()
self.box_appnrs.addItem("")
@@ -232,9 +234,13 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
apparats = [str(apparat) for apparat in apparats]
self.box_appnrs.addItems(apparats)
persons = self.db.getProfs()
self.box_person.addItems([f"{person.lastname}, {person.firstname}" for person in persons])
persons = sorted(persons, key=lambda x: x.lastname)
self.box_person.addItems(
[f"{person.lastname}, {person.firstname}" for person in persons]
)
self.box_fach.addItems(subject[1] for subject in self.db.getSubjects())
semester = self.db.getSemersters()
semester = self.db.getSemesters()
semester = sort_semesters_list(semester)
self.box_erstellsemester.addItems(semester)
self.box_semester.addItems(semester)
self.statistics_table.setRowCount(0)
@@ -269,7 +275,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
# place the graph into tabWidget_3
self.tabWidget_3.addTab(graph, "Graph")
self.tabWidget_3.setCurrentIndex(table_or_graph)
self.logger.log_info("populate_tab finished")
logger.info("populate_tab finished")
def delete_selected_apparats(self):
# get all selected apparats
@@ -281,9 +287,9 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
selected_apparat_rows.append(i)
# delete all selected apparats
# # print(selected_apparats)
self.logger.log_info(f"Deleting apparats: {selected_apparats}")
logger.info(f"Deleting apparats: {selected_apparats}")
for apparat in selected_apparats:
self.db.deleteApparat(apparat, generateSemesterByDate())
self.db.deleteApparat(apparat, self.semester)
for row in selected_apparat_rows:
# set the background of the row to red
for j in range(5):
@@ -295,10 +301,10 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
def statistics(self):
"""Generate the statistics based on the selected filters."""
self.tableWidget.setRowCount(0)
active_semseter = generateSemesterByDate()
active_semseter = self.semester
self.db_err_message.setText("")
self.btn_del_select_apparats.setEnabled(True)
self.btn_notify_for_deletion.setEnabled(True)
self.btn_del_select_apparats.setEnabled(False)
self.btn_notify_for_deletion.setEnabled(False)
params = {
"appnr": (
self.box_appnrs.currentText()
@@ -306,7 +312,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
else None
),
"prof_id": (
self.db.getProfId(self.box_person.currentText())
self.db.getProfId(Prof(fullname=self.box_person.currentText()))
if self.box_person.currentText() != ""
else None
),
@@ -348,29 +354,22 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.db_err_message.setText("Keine Ergebnisse gefunden")
return
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)
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)
sem = Semester().from_string(
entry[8] if entry[8] is not None else entry[5]
)
logger.info(f"Semester: {sem}")
if sem.isPastSemester(Semester()):
data.append(entry)
else:
data.append(entry)
self.tableWidget.setRowCount(len(data))
if len(data) > 0:
self.btn_del_select_apparats.setEnabled(True)
self.btn_notify_for_deletion.setEnabled(True)
for i in range(len(data)):
# set the items 0 = clickable checkbox, 1 = appname, 2 = profname, 3 = fach
self.tableWidget.setItem(i, 0, QtWidgets.QTableWidgetItem(""))