diff --git a/src/__init__.py b/src/__init__.py
index 88d2979..2661405 100644
--- a/src/__init__.py
+++ b/src/__init__.py
@@ -1,3 +1,4 @@
+__all__ = ["__version__", "__author__", "Icon", "settings"]
from config import Config
import os
diff --git a/src/backend/database.py b/src/backend/database.py
index 83f7a51..88d66c1 100644
--- a/src/backend/database.py
+++ b/src/backend/database.py
@@ -30,11 +30,9 @@ from loguru import logger as log
logger = log
logger.remove()
-logger.add("logs/database.log", rotation="1 week", enqueue=True)
+logger.add("logs/application.log", rotation="1 week", enqueue=True)
log.add(
- "logs/application.log",
- rotation="1 day",
- compression="zip",
+ "logs/database.log",
)
# logger.add(sys.stderr, format="{time} {level} {message}", level="INFO")
@@ -72,7 +70,7 @@ class Database:
path = os.path.abspath(path)
if not os.path.exists(path):
# create path
- # print(path)
+ # logger.debug(path)
os.makedirs(path)
if self.get_db_contents() == []:
logger.critical("Database does not exist, creating tables")
@@ -227,11 +225,11 @@ class Database:
f"SELECT bookdata FROM media WHERE app_id={app_id} AND prof_id={prof_id}"
)
logger.debug(t_query)
- # # print(t_query)
+ # # logger.debug(t_query)
result = cursor.execute(t_query).fetchall()
result = [load_pickle(i[0]) for i in result]
if bookdata in result:
- # print("Bookdata already in database")
+ # logger.debug("Bookdata already in database")
# check if the book was deleted in the apparat
query = (
"SELECT deleted FROM media WHERE app_id=? AND prof_id=? AND bookdata=?"
@@ -239,7 +237,7 @@ class Database:
params = (app_id, prof_id, dump_pickle(bookdata))
result = cursor.execute(query, params).fetchone()
if result[0] == 1:
- # print("Book was deleted, updating bookdata")
+ # logger.debug("Book was deleted, updating bookdata")
query = "UPDATE media SET deleted=0 WHERE app_id=? AND prof_id=? AND bookdata=?"
params = (app_id, prof_id, dump_pickle(bookdata))
cursor.execute(query, params)
@@ -511,7 +509,7 @@ class Database:
delete=False, dir=tempdir_path, mode="wb", suffix=f".{filetype}"
)
file.write(blob)
- # print("file created")
+ # logger.debug("file created")
return file.name
def getFiles(self, app_id: Union[str, int], prof_id: int) -> list[tuple]:
@@ -539,7 +537,7 @@ class Database:
return [i[0] for i in data]
def insertSubjects(self):
- # print("Inserting subjects")
+ # logger.debug("Inserting subjects")
subjects = [
"Biologie",
"Chemie",
@@ -897,7 +895,7 @@ class Database:
)
ret = []
for i in data:
- print(i)
+ logger.debug(i)
ret.append(Apparat().from_tuple(i))
return ret
@@ -1110,9 +1108,9 @@ class Database:
kwargs["dauer"] = kwargs["dauer"].replace("Ja", "1").replace("Nein", "0")
query = "SELECT * FROM semesterapparat WHERE "
for key, value in kwargs.items() if kwargs.items() is not None else {}:
- # print(key, value)
+ # logger.debug(key, value)
query += f"{key}='{value}' AND "
- # print(query)
+ # logger.debug(query)
# remove deletesemester part from normal query, as this will be added to the database upon deleting the apparat
if "deletesemester" in kwargs.keys():
query = query.replace(
@@ -1128,7 +1126,7 @@ class Database:
query = query.replace(
f"endsemester='{kwargs['endsemester']}' AND ", "xyz"
)
- # print("replaced")
+ # logger.debug("replaced")
query = query.replace(
"xyz",
f"(erstellsemester='{kwargs['endsemester']}' OR verlängerung_bis='{kwargs['endsemester']}') AND ",
@@ -1143,9 +1141,9 @@ class Database:
query = query[:-1]
query = query.strip()
- # print(query)
+ # logger.debug(query)
res = __query(query)
- # print(res)
+ # logger.debug(res)
return res
# Admin data
@@ -1314,15 +1312,15 @@ class Database:
"""
return self.query_db("SELECT titel, fname,lname,mail,telnr,fullname FROM prof")
- def restoreApparat(self, app_id: Union[str, int]):
+ def restoreApparat(self, app_id: Union[str, int], app_name: str):
"""restore an apparat from the database
Args:
app_id (Union[str, int]): the id of the apparat
"""
return self.query_db(
- "UPDATE semesterapparat SET deletion_status=0, deleted_date=NULL WHERE appnr=?",
- (app_id,),
+ "UPDATE semesterapparat SET deletion_status=0, deleted_date=NULL WHERE appnr=? and name=?",
+ (app_id, app_name),
)
# ELSA
@@ -1433,7 +1431,7 @@ class Database:
blob = self.query_db(
"SELECT fileblob FROM elsa_files WHERE filename=?", (filename,), one=True
)[0]
- # print(blob)
+ # logger.debug(blob)
tempdir = self.database.tempdir
tempdir = tempdir.replace("~", str(Path.home()))
tempdir_path = Path(tempdir)
@@ -1443,7 +1441,7 @@ class Database:
delete=False, dir=tempdir_path, mode="wb", suffix=f".{filetype}"
)
file.write(blob)
- # print("file created")
+ # logger.debug("file created")
return file.name
def getElsaApparats(self) -> ELSA:
diff --git a/src/ui/__init__.py b/src/ui/__init__.py
index 620967d..0867516 100644
--- a/src/ui/__init__.py
+++ b/src/ui/__init__.py
@@ -1,6 +1,6 @@
import pathlib
-from .Ui_semesterapparat_ui import Ui_MainWindow as Ui_Semesterapparat
+from .semesterapparat_ui_ui import Ui_MainWindow as Ui_Semesterapparat
# from .dialogs import (
# ApparatExtendDialog,
diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui
index 734317d..c458296 100644
--- a/src/ui/semesterapparat_ui.ui
+++ b/src/ui/semesterapparat_ui.ui
@@ -595,67 +595,6 @@
-
-
-
- 1110
- 120
- 131
- 51
-
-
-
-
- 9
- false
-
-
-
- Abhängig von der Anzahl der Medien kann die Suche sehr lange dauern
-
-
- Medien aus Dokument
- hinzufügen
-
-
-
-
-
- 1110
- 80
- 131
- 25
-
-
-
-
- 9
- false
-
-
-
- Dokument öffnen
-
-
-
-
-
- 1110
- 40
- 131
- 25
-
-
-
-
- 9
- false
-
-
-
- Dokument hinzufügen
-
-
@@ -1506,6 +1445,103 @@
Speichern und anlegen
+
+
+
+ 1110
+ 17
+ 131
+ 181
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 9
+ false
+
+
+
+ Dokument hinzufügen
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 9
+ false
+
+
+
+ Dokument öffnen
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 9
+ false
+
+
+
+ Abhängig von der Anzahl der Medien kann die Suche sehr lange dauern
+
+
+ Medien aus Dokument
+ hinzufügen
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 9
+ false
+
+
+
+ Die Apparatsdetails werden aus dem Dokument gelesen und eingetragen
+Einige Angaben müssen ggf angepasst werden
+
+
+ Daten aus Dokument
+übernehmen
+
+
+
+
+
diff --git a/src/ui/semesterapparat_ui_ui.py b/src/ui/semesterapparat_ui_ui.py
new file mode 100644
index 0000000..b4a1be2
--- /dev/null
+++ b/src/ui/semesterapparat_ui_ui.py
@@ -0,0 +1,1002 @@
+# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\semesterapparat_ui.ui'
+#
+# Created by: PyQt6 UI code generator 6.8.0
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic6 is
+# run again. Do not edit this file unless you know what you are doing.
+
+
+from PyQt6 import QtCore, QtGui, QtWidgets
+
+
+class Ui_MainWindow(object):
+ def setupUi(self, MainWindow):
+ MainWindow.setObjectName("MainWindow")
+ MainWindow.setWindowModality(QtCore.Qt.WindowModality.WindowModal)
+ MainWindow.setEnabled(True)
+ MainWindow.resize(1590, 800)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(MainWindow.sizePolicy().hasHeightForWidth())
+ MainWindow.setSizePolicy(sizePolicy)
+ MainWindow.setMinimumSize(QtCore.QSize(1278, 800))
+ MainWindow.setMaximumSize(QtCore.QSize(1590, 800))
+ MainWindow.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.NoContextMenu)
+ icon = QtGui.QIcon()
+ icon.addPixmap(QtGui.QPixmap("c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\../../../../../../icons/logo.ico"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
+ MainWindow.setWindowIcon(icon)
+ MainWindow.setStatusTip("")
+ self.centralwidget = QtWidgets.QWidget(parent=MainWindow)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.centralwidget.sizePolicy().hasHeightForWidth())
+ self.centralwidget.setSizePolicy(sizePolicy)
+ self.centralwidget.setObjectName("centralwidget")
+ self.verticalLayoutWidget = QtWidgets.QWidget(parent=self.centralwidget)
+ self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 1271, 751))
+ self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
+ self.mainLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
+ self.mainLayout.setContentsMargins(0, 0, 0, 0)
+ self.mainLayout.setObjectName("mainLayout")
+ self.horizontalLayout = QtWidgets.QHBoxLayout()
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.gridLayout = QtWidgets.QGridLayout()
+ self.gridLayout.setObjectName("gridLayout")
+ self.tabWidget = QtWidgets.QTabWidget(parent=self.verticalLayoutWidget)
+ self.tabWidget.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.tabWidget.setObjectName("tabWidget")
+ self.createApparat = QtWidgets.QWidget()
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.createApparat.sizePolicy().hasHeightForWidth())
+ self.createApparat.setSizePolicy(sizePolicy)
+ self.createApparat.setObjectName("createApparat")
+ self.horizontalLayoutWidget_2 = QtWidgets.QWidget(parent=self.createApparat)
+ self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(0, 0, 1261, 163))
+ self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
+ self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.formLayout = QtWidgets.QFormLayout()
+ self.formLayout.setObjectName("formLayout")
+ self.verticalLayout_2 = QtWidgets.QVBoxLayout()
+ self.verticalLayout_2.setObjectName("verticalLayout_2")
+ spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
+ self.verticalLayout_2.addItem(spacerItem)
+ self.create_document = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget_2)
+ self.create_document.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.create_document.setObjectName("create_document")
+ self.verticalLayout_2.addWidget(self.create_document)
+ self.create_new_app = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget_2)
+ self.create_new_app.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.create_new_app.setObjectName("create_new_app")
+ self.verticalLayout_2.addWidget(self.create_new_app)
+ self.cancel_active_selection = QtWidgets.QPushButton(parent=self.horizontalLayoutWidget_2)
+ self.cancel_active_selection.setEnabled(False)
+ self.cancel_active_selection.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.cancel_active_selection.setObjectName("cancel_active_selection")
+ self.verticalLayout_2.addWidget(self.cancel_active_selection)
+ spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding)
+ self.verticalLayout_2.addItem(spacerItem1)
+ self.formLayout.setLayout(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.verticalLayout_2)
+ self.tableWidget_apparate = QtWidgets.QTableWidget(parent=self.horizontalLayoutWidget_2)
+ self.tableWidget_apparate.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.tableWidget_apparate.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
+ self.tableWidget_apparate.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.tableWidget_apparate.setAlternatingRowColors(True)
+ self.tableWidget_apparate.setTextElideMode(QtCore.Qt.TextElideMode.ElideMiddle)
+ self.tableWidget_apparate.setObjectName("tableWidget_apparate")
+ self.tableWidget_apparate.setColumnCount(6)
+ self.tableWidget_apparate.setRowCount(0)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparate.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparate.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparate.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparate.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparate.setHorizontalHeaderItem(4, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparate.setHorizontalHeaderItem(5, item)
+ self.tableWidget_apparate.horizontalHeader().setCascadingSectionResizes(True)
+ self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.tableWidget_apparate)
+ self.horizontalLayout_2.addLayout(self.formLayout)
+ self.line = QtWidgets.QFrame(parent=self.createApparat)
+ self.line.setGeometry(QtCore.QRect(0, 160, 1261, 21))
+ self.line.setFrameShape(QtWidgets.QFrame.Shape.HLine)
+ self.line.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
+ self.line.setObjectName("line")
+ self.gridLayoutWidget_2 = QtWidgets.QWidget(parent=self.createApparat)
+ self.gridLayoutWidget_2.setEnabled(True)
+ self.gridLayoutWidget_2.setGeometry(QtCore.QRect(0, 180, 1261, 511))
+ self.gridLayoutWidget_2.setObjectName("gridLayoutWidget_2")
+ self.gridLayout_2 = QtWidgets.QGridLayout(self.gridLayoutWidget_2)
+ self.gridLayout_2.setContentsMargins(0, 0, 0, 0)
+ self.gridLayout_2.setObjectName("gridLayout_2")
+ self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_5.setObjectName("horizontalLayout_5")
+ spacerItem2 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Minimum)
+ self.horizontalLayout_5.addItem(spacerItem2)
+ self.chkbx_show_del_media = QtWidgets.QCheckBox(parent=self.gridLayoutWidget_2)
+ self.chkbx_show_del_media.setObjectName("chkbx_show_del_media")
+ self.horizontalLayout_5.addWidget(self.chkbx_show_del_media)
+ spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Minimum)
+ self.horizontalLayout_5.addItem(spacerItem3)
+ self.btn_reserve = QtWidgets.QPushButton(parent=self.gridLayoutWidget_2)
+ self.btn_reserve.setObjectName("btn_reserve")
+ self.horizontalLayout_5.addWidget(self.btn_reserve)
+ self.add_layout = QtWidgets.QHBoxLayout()
+ self.add_layout.setObjectName("add_layout")
+ self.label_info = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
+ self.label_info.setObjectName("label_info")
+ self.add_layout.addWidget(self.label_info)
+ self.line_2 = QtWidgets.QFrame(parent=self.gridLayoutWidget_2)
+ self.line_2.setFrameShape(QtWidgets.QFrame.Shape.VLine)
+ self.line_2.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
+ self.line_2.setObjectName("line_2")
+ self.add_layout.addWidget(self.line_2)
+ self.progress_label = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
+ self.progress_label.setObjectName("progress_label")
+ self.add_layout.addWidget(self.progress_label)
+ self.horizontalLayout_5.addLayout(self.add_layout)
+ spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Minimum)
+ self.horizontalLayout_5.addItem(spacerItem4)
+ self.avail_layout = QtWidgets.QHBoxLayout()
+ self.avail_layout.setObjectName("avail_layout")
+ self.horizontalLayout_5.addLayout(self.avail_layout)
+ self.label_20 = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
+ self.label_20.setObjectName("label_20")
+ self.horizontalLayout_5.addWidget(self.label_20)
+ self.line_3 = QtWidgets.QFrame(parent=self.gridLayoutWidget_2)
+ self.line_3.setFrameShape(QtWidgets.QFrame.Shape.VLine)
+ self.line_3.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
+ self.line_3.setObjectName("line_3")
+ self.horizontalLayout_5.addWidget(self.line_3)
+ self.avail_status = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
+ self.avail_status.setObjectName("avail_status")
+ self.horizontalLayout_5.addWidget(self.avail_status)
+ self.automation_add_selected_books = QtWidgets.QPushButton(parent=self.gridLayoutWidget_2)
+ self.automation_add_selected_books.setObjectName("automation_add_selected_books")
+ self.horizontalLayout_5.addWidget(self.automation_add_selected_books)
+ spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
+ self.horizontalLayout_5.addItem(spacerItem5)
+ self.gridLayout_2.addLayout(self.horizontalLayout_5, 4, 0, 1, 1)
+ self.tableWidget_apparat_media = QtWidgets.QTableWidget(parent=self.gridLayoutWidget_2)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Fixed, QtWidgets.QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.tableWidget_apparat_media.sizePolicy().hasHeightForWidth())
+ self.tableWidget_apparat_media.setSizePolicy(sizePolicy)
+ self.tableWidget_apparat_media.setMinimumSize(QtCore.QSize(1259, 0))
+ self.tableWidget_apparat_media.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.tableWidget_apparat_media.setContextMenuPolicy(QtCore.Qt.ContextMenuPolicy.CustomContextMenu)
+ self.tableWidget_apparat_media.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
+ self.tableWidget_apparat_media.setEditTriggers(QtWidgets.QAbstractItemView.EditTrigger.NoEditTriggers)
+ self.tableWidget_apparat_media.setAlternatingRowColors(True)
+ self.tableWidget_apparat_media.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)
+ self.tableWidget_apparat_media.setObjectName("tableWidget_apparat_media")
+ self.tableWidget_apparat_media.setColumnCount(7)
+ self.tableWidget_apparat_media.setRowCount(0)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(3, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(4, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(5, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.tableWidget_apparat_media.setHorizontalHeaderItem(6, item)
+ self.tableWidget_apparat_media.horizontalHeader().setCascadingSectionResizes(True)
+ self.gridLayout_2.addWidget(self.tableWidget_apparat_media, 9, 0, 1, 1)
+ self.label = QtWidgets.QLabel(parent=self.gridLayoutWidget_2)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ self.label.setFont(font)
+ self.label.setObjectName("label")
+ self.gridLayout_2.addWidget(self.label, 2, 0, 1, 1)
+ self.app_group_box = QtWidgets.QGroupBox(parent=self.gridLayoutWidget_2)
+ self.app_group_box.setEnabled(True)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.app_group_box.sizePolicy().hasHeightForWidth())
+ self.app_group_box.setSizePolicy(sizePolicy)
+ self.app_group_box.setMinimumSize(QtCore.QSize(0, 210))
+ font = QtGui.QFont()
+ font.setPointSize(12)
+ font.setBold(True)
+ self.app_group_box.setFont(font)
+ self.app_group_box.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.app_group_box.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeading|QtCore.Qt.AlignmentFlag.AlignLeft|QtCore.Qt.AlignmentFlag.AlignVCenter)
+ self.app_group_box.setCheckable(False)
+ self.app_group_box.setObjectName("app_group_box")
+ self.document_list = QtWidgets.QTableWidget(parent=self.app_group_box)
+ self.document_list.setGeometry(QtCore.QRect(780, 20, 321, 181))
+ font = QtGui.QFont()
+ font.setPointSize(10)
+ font.setBold(False)
+ font.setKerning(False)
+ self.document_list.setFont(font)
+ self.document_list.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.document_list.setAcceptDrops(True)
+ self.document_list.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)
+ self.document_list.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.SizeAdjustPolicy.AdjustToContents)
+ self.document_list.setDragEnabled(True)
+ self.document_list.setDragDropMode(QtWidgets.QAbstractItemView.DragDropMode.DragOnly)
+ self.document_list.setDefaultDropAction(QtCore.Qt.DropAction.LinkAction)
+ self.document_list.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.SingleSelection)
+ self.document_list.setObjectName("document_list")
+ self.document_list.setColumnCount(4)
+ self.document_list.setRowCount(0)
+ item = QtWidgets.QTableWidgetItem()
+ font = QtGui.QFont()
+ font.setFamily("Arial")
+ font.setPointSize(8)
+ item.setFont(font)
+ self.document_list.setHorizontalHeaderItem(0, item)
+ item = QtWidgets.QTableWidgetItem()
+ font = QtGui.QFont()
+ font.setFamily("Arial")
+ font.setPointSize(8)
+ item.setFont(font)
+ self.document_list.setHorizontalHeaderItem(1, item)
+ item = QtWidgets.QTableWidgetItem()
+ font = QtGui.QFont()
+ font.setFamily("Arial")
+ font.setPointSize(8)
+ item.setFont(font)
+ self.document_list.setHorizontalHeaderItem(2, item)
+ item = QtWidgets.QTableWidgetItem()
+ self.document_list.setHorizontalHeaderItem(3, item)
+ self.document_list.horizontalHeader().setDefaultSectionSize(107)
+ self.appname_mand = QtWidgets.QLabel(parent=self.app_group_box)
+ self.appname_mand.setGeometry(QtCore.QRect(330, 50, 16, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.appname_mand.setFont(font)
+ self.appname_mand.setObjectName("appname_mand")
+ self.profname_mand = QtWidgets.QLabel(parent=self.app_group_box)
+ self.profname_mand.setGeometry(QtCore.QRect(110, 110, 16, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.profname_mand.setFont(font)
+ self.profname_mand.setObjectName("profname_mand")
+ self.prof_title = QtWidgets.QLineEdit(parent=self.app_group_box)
+ self.prof_title.setGeometry(QtCore.QRect(120, 80, 71, 20))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.prof_title.setFont(font)
+ self.prof_title.setFocusPolicy(QtCore.Qt.FocusPolicy.ClickFocus)
+ self.prof_title.setObjectName("prof_title")
+ self.fach_mand = QtWidgets.QLabel(parent=self.app_group_box)
+ self.fach_mand.setGeometry(QtCore.QRect(510, 50, 47, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.fach_mand.setFont(font)
+ self.fach_mand.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.fach_mand.setObjectName("fach_mand")
+ self.btn_apparat_apply = QtWidgets.QPushButton(parent=self.app_group_box)
+ self.btn_apparat_apply.setGeometry(QtCore.QRect(360, 150, 75, 23))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.btn_apparat_apply.setFont(font)
+ self.btn_apparat_apply.setObjectName("btn_apparat_apply")
+ self.label_9 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_9.setGeometry(QtCore.QRect(20, 160, 71, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_9.setFont(font)
+ self.label_9.setObjectName("label_9")
+ self.gridLayoutWidget_5 = QtWidgets.QWidget(parent=self.app_group_box)
+ self.gridLayoutWidget_5.setGeometry(QtCore.QRect(520, 30, 241, 61))
+ self.gridLayoutWidget_5.setObjectName("gridLayoutWidget_5")
+ self.gridLayout_6 = QtWidgets.QGridLayout(self.gridLayoutWidget_5)
+ self.gridLayout_6.setContentsMargins(0, 0, 0, 0)
+ self.gridLayout_6.setObjectName("gridLayout_6")
+ self.app_fach = QtWidgets.QComboBox(parent=self.gridLayoutWidget_5)
+ self.app_fach.setMaximumSize(QtCore.QSize(16777215, 25))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.app_fach.setFont(font)
+ self.app_fach.setEditable(True)
+ self.app_fach.setObjectName("app_fach")
+ self.gridLayout_6.addWidget(self.app_fach, 0, 1, 1, 1)
+ spacerItem6 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
+ self.gridLayout_6.addItem(spacerItem6, 0, 3, 1, 1)
+ self.valid_check_app_fach = QtWidgets.QToolButton(parent=self.gridLayoutWidget_5)
+ self.valid_check_app_fach.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.valid_check_app_fach.setText("")
+ self.valid_check_app_fach.setAutoRaise(True)
+ self.valid_check_app_fach.setArrowType(QtCore.Qt.ArrowType.NoArrow)
+ self.valid_check_app_fach.setObjectName("valid_check_app_fach")
+ self.gridLayout_6.addWidget(self.valid_check_app_fach, 0, 2, 1, 1)
+ self._mand = QtWidgets.QLabel(parent=self.app_group_box)
+ self._mand.setGeometry(QtCore.QRect(330, 90, 16, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self._mand.setFont(font)
+ self._mand.setObjectName("_mand")
+ self.prof_tel_nr = QtWidgets.QLineEdit(parent=self.app_group_box)
+ self.prof_tel_nr.setGeometry(QtCore.QRect(120, 160, 121, 20))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.prof_tel_nr.setFont(font)
+ self.prof_tel_nr.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone)
+ self.prof_tel_nr.setPlaceholderText("")
+ self.prof_tel_nr.setObjectName("prof_tel_nr")
+ self.check_eternal_app = QtWidgets.QCheckBox(parent=self.app_group_box)
+ self.check_eternal_app.setEnabled(False)
+ self.check_eternal_app.setGeometry(QtCore.QRect(340, 120, 101, 17))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.check_eternal_app.setFont(font)
+ self.check_eternal_app.setObjectName("check_eternal_app")
+ self.sem_sommer = QtWidgets.QCheckBox(parent=self.app_group_box)
+ self.sem_sommer.setGeometry(QtCore.QRect(340, 100, 82, 17))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.sem_sommer.setFont(font)
+ self.sem_sommer.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
+ self.sem_sommer.setObjectName("sem_sommer")
+ self.drpdwn_prof_name = QtWidgets.QComboBox(parent=self.app_group_box)
+ self.drpdwn_prof_name.setGeometry(QtCore.QRect(120, 110, 121, 22))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.drpdwn_prof_name.setFont(font)
+ self.drpdwn_prof_name.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
+ self.drpdwn_prof_name.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone)
+ self.drpdwn_prof_name.setEditable(True)
+ self.drpdwn_prof_name.setInsertPolicy(QtWidgets.QComboBox.InsertPolicy.InsertAlphabetically)
+ self.drpdwn_prof_name.setPlaceholderText("")
+ self.drpdwn_prof_name.setFrame(True)
+ self.drpdwn_prof_name.setObjectName("drpdwn_prof_name")
+ self.mail_mand = QtWidgets.QLabel(parent=self.app_group_box)
+ self.mail_mand.setGeometry(QtCore.QRect(110, 140, 47, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.mail_mand.setFont(font)
+ self.mail_mand.setObjectName("mail_mand")
+ self.label_3 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_3.setGeometry(QtCore.QRect(20, 80, 61, 20))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_3.setFont(font)
+ self.label_3.setObjectName("label_3")
+ self.label_2 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_2.setGeometry(QtCore.QRect(20, 50, 101, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_2.setFont(font)
+ self.label_2.setObjectName("label_2")
+ self.label_8 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_8.setGeometry(QtCore.QRect(20, 140, 71, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_8.setFont(font)
+ self.label_8.setObjectName("label_8")
+ self.label_10 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_10.setGeometry(QtCore.QRect(480, 50, 51, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_10.setFont(font)
+ self.label_10.setObjectName("label_10")
+ self.prof_mail = QtWidgets.QLineEdit(parent=self.app_group_box)
+ self.prof_mail.setGeometry(QtCore.QRect(120, 140, 121, 20))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.prof_mail.setFont(font)
+ self.prof_mail.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhEmailCharactersOnly)
+ self.prof_mail.setMaxLength(200)
+ self.prof_mail.setPlaceholderText("")
+ self.prof_mail.setObjectName("prof_mail")
+ self.formLayoutWidget_2 = QtWidgets.QWidget(parent=self.app_group_box)
+ self.formLayoutWidget_2.setGeometry(QtCore.QRect(560, 100, 211, 99))
+ self.formLayoutWidget_2.setObjectName("formLayoutWidget_2")
+ self.formLayout_3 = QtWidgets.QFormLayout(self.formLayoutWidget_2)
+ self.formLayout_3.setContentsMargins(0, 0, 0, 0)
+ self.formLayout_3.setObjectName("formLayout_3")
+ self.label_12 = QtWidgets.QLabel(parent=self.formLayoutWidget_2)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_12.setFont(font)
+ self.label_12.setObjectName("label_12")
+ self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_12)
+ self.prof_id_adis = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.prof_id_adis.setFont(font)
+ self.prof_id_adis.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhPreferNumbers)
+ self.prof_id_adis.setText("")
+ self.prof_id_adis.setObjectName("prof_id_adis")
+ self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.prof_id_adis)
+ self.label_13 = QtWidgets.QLabel(parent=self.formLayoutWidget_2)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_13.setFont(font)
+ self.label_13.setObjectName("label_13")
+ self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_13)
+ self.apparat_id_adis = QtWidgets.QLineEdit(parent=self.formLayoutWidget_2)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.apparat_id_adis.setFont(font)
+ self.apparat_id_adis.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhPreferNumbers)
+ self.apparat_id_adis.setObjectName("apparat_id_adis")
+ self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.apparat_id_adis)
+ self.sem_year = QtWidgets.QLineEdit(parent=self.app_group_box)
+ self.sem_year.setGeometry(QtCore.QRect(410, 90, 113, 20))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.sem_year.setFont(font)
+ self.sem_year.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
+ self.sem_year.setMaxLength(5)
+ self.sem_year.setObjectName("sem_year")
+ self.check_send_mail = QtWidgets.QCheckBox(parent=self.app_group_box)
+ self.check_send_mail.setGeometry(QtCore.QRect(450, 150, 91, 24))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.check_send_mail.setFont(font)
+ self.check_send_mail.setObjectName("check_send_mail")
+ self.sem_winter = QtWidgets.QCheckBox(parent=self.app_group_box)
+ self.sem_winter.setGeometry(QtCore.QRect(340, 80, 82, 17))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.sem_winter.setFont(font)
+ self.sem_winter.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
+ self.sem_winter.setObjectName("sem_winter")
+ self.label_4 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_4.setGeometry(QtCore.QRect(20, 110, 71, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_4.setFont(font)
+ self.label_4.setObjectName("label_4")
+ self.telnr_mand = QtWidgets.QLabel(parent=self.app_group_box)
+ self.telnr_mand.setGeometry(QtCore.QRect(110, 160, 47, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.telnr_mand.setFont(font)
+ self.telnr_mand.setObjectName("telnr_mand")
+ self.btn_apparat_save = QtWidgets.QPushButton(parent=self.app_group_box)
+ self.btn_apparat_save.setGeometry(QtCore.QRect(270, 150, 75, 23))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.btn_apparat_save.setFont(font)
+ self.btn_apparat_save.setStatusTip("")
+ self.btn_apparat_save.setObjectName("btn_apparat_save")
+ self.label_5 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_5.setGeometry(QtCore.QRect(250, 50, 91, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_5.setFont(font)
+ self.label_5.setObjectName("label_5")
+ self.app_name = QtWidgets.QLineEdit(parent=self.app_group_box)
+ self.app_name.setGeometry(QtCore.QRect(340, 50, 113, 20))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.app_name.setFont(font)
+ self.app_name.setFocusPolicy(QtCore.Qt.FocusPolicy.StrongFocus)
+ self.app_name.setObjectName("app_name")
+ self.drpdwn_app_nr = QtWidgets.QComboBox(parent=self.app_group_box)
+ self.drpdwn_app_nr.setGeometry(QtCore.QRect(120, 50, 69, 22))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.drpdwn_app_nr.setFont(font)
+ self.drpdwn_app_nr.setInputMethodHints(QtCore.Qt.InputMethodHint.ImhNone)
+ self.drpdwn_app_nr.setEditable(True)
+ self.drpdwn_app_nr.setObjectName("drpdwn_app_nr")
+ self.label_6 = QtWidgets.QLabel(parent=self.app_group_box)
+ self.label_6.setGeometry(QtCore.QRect(270, 90, 61, 21))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.label_6.setFont(font)
+ self.label_6.setObjectName("label_6")
+ self.valid_check_profname = QtWidgets.QToolButton(parent=self.app_group_box)
+ self.valid_check_profname.setGeometry(QtCore.QRect(240, 110, 23, 22))
+ self.valid_check_profname.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.valid_check_profname.setText("")
+ self.valid_check_profname.setAutoRaise(True)
+ self.valid_check_profname.setArrowType(QtCore.Qt.ArrowType.NoArrow)
+ self.valid_check_profname.setObjectName("valid_check_profname")
+ self.valid_check_appname = QtWidgets.QToolButton(parent=self.app_group_box)
+ self.valid_check_appname.setGeometry(QtCore.QRect(450, 50, 22, 22))
+ self.valid_check_appname.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.valid_check_appname.setText("")
+ self.valid_check_appname.setAutoRaise(True)
+ self.valid_check_appname.setObjectName("valid_check_appname")
+ self.valid_check_semester = QtWidgets.QToolButton(parent=self.app_group_box)
+ self.valid_check_semester.setGeometry(QtCore.QRect(520, 90, 22, 22))
+ self.valid_check_semester.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.valid_check_semester.setText("")
+ self.valid_check_semester.setAutoRaise(True)
+ self.valid_check_semester.setObjectName("valid_check_semester")
+ self.valid_check_mail = QtWidgets.QToolButton(parent=self.app_group_box)
+ self.valid_check_mail.setGeometry(QtCore.QRect(240, 140, 22, 22))
+ self.valid_check_mail.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.valid_check_mail.setText("")
+ self.valid_check_mail.setAutoRaise(True)
+ self.valid_check_mail.setObjectName("valid_check_mail")
+ self.valid_check_telnr = QtWidgets.QToolButton(parent=self.app_group_box)
+ self.valid_check_telnr.setGeometry(QtCore.QRect(240, 160, 22, 22))
+ self.valid_check_telnr.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.valid_check_telnr.setText("")
+ self.valid_check_telnr.setAutoRaise(True)
+ self.valid_check_telnr.setObjectName("valid_check_telnr")
+ self.saveandcreate = QtWidgets.QPushButton(parent=self.app_group_box)
+ self.saveandcreate.setEnabled(False)
+ self.saveandcreate.setGeometry(QtCore.QRect(270, 180, 161, 24))
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.saveandcreate.setFont(font)
+ self.saveandcreate.setObjectName("saveandcreate")
+ self.verticalLayoutWidget_3 = QtWidgets.QWidget(parent=self.app_group_box)
+ self.verticalLayoutWidget_3.setGeometry(QtCore.QRect(1110, 17, 131, 181))
+ self.verticalLayoutWidget_3.setObjectName("verticalLayoutWidget_3")
+ self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_3)
+ self.verticalLayout_8.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout_8.setObjectName("verticalLayout_8")
+ self.btn_add_document = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_3)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.btn_add_document.sizePolicy().hasHeightForWidth())
+ self.btn_add_document.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.btn_add_document.setFont(font)
+ self.btn_add_document.setObjectName("btn_add_document")
+ self.verticalLayout_8.addWidget(self.btn_add_document)
+ self.btn_open_document = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_3)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.btn_open_document.sizePolicy().hasHeightForWidth())
+ self.btn_open_document.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.btn_open_document.setFont(font)
+ self.btn_open_document.setObjectName("btn_open_document")
+ self.verticalLayout_8.addWidget(self.btn_open_document)
+ self.check_file = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_3)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.check_file.sizePolicy().hasHeightForWidth())
+ self.check_file.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.check_file.setFont(font)
+ self.check_file.setObjectName("check_file")
+ self.verticalLayout_8.addWidget(self.check_file)
+ self.btn_extract_data_from_document = QtWidgets.QPushButton(parent=self.verticalLayoutWidget_3)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.MinimumExpanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.btn_extract_data_from_document.sizePolicy().hasHeightForWidth())
+ self.btn_extract_data_from_document.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(9)
+ font.setBold(False)
+ self.btn_extract_data_from_document.setFont(font)
+ self.btn_extract_data_from_document.setObjectName("btn_extract_data_from_document")
+ self.verticalLayout_8.addWidget(self.btn_extract_data_from_document)
+ self.verticalLayout_8.setStretch(0, 1)
+ self.verticalLayout_8.setStretch(1, 1)
+ self.verticalLayout_8.setStretch(2, 2)
+ self.verticalLayout_8.setStretch(3, 2)
+ self.gridLayout_2.addWidget(self.app_group_box, 1, 0, 1, 1)
+ self.add_medium = QtWidgets.QPushButton(parent=self.createApparat)
+ self.add_medium.setGeometry(QtCore.QRect(3, 695, 121, 20))
+ self.add_medium.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.add_medium.setObjectName("add_medium")
+ self.tabWidget.addTab(self.createApparat, "")
+ self.search_statistics = QtWidgets.QWidget()
+ self.search_statistics.setObjectName("search_statistics")
+ self.tabWidget.addTab(self.search_statistics, "")
+ self.elsatab = QtWidgets.QWidget()
+ self.elsatab.setObjectName("elsatab")
+ self.tabWidget.addTab(self.elsatab, "")
+ self.admin = QtWidgets.QWidget()
+ self.admin.setObjectName("admin")
+ self.label_21 = QtWidgets.QLabel(parent=self.admin)
+ self.label_21.setGeometry(QtCore.QRect(10, 30, 47, 22))
+ self.label_21.setObjectName("label_21")
+ self.select_action_box = QtWidgets.QComboBox(parent=self.admin)
+ self.select_action_box.setGeometry(QtCore.QRect(60, 30, 181, 22))
+ self.select_action_box.setObjectName("select_action_box")
+ self.select_action_box.addItem("")
+ self.select_action_box.addItem("")
+ self.select_action_box.addItem("")
+ self.admin_action = QtWidgets.QGroupBox(parent=self.admin)
+ self.admin_action.setGeometry(QtCore.QRect(10, 70, 570, 291))
+ font = QtGui.QFont()
+ font.setBold(False)
+ self.admin_action.setFont(font)
+ self.admin_action.setFlat(True)
+ self.admin_action.setCheckable(False)
+ self.admin_action.setObjectName("admin_action")
+ self.tabWidget.addTab(self.admin, "")
+ self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
+ self.horizontalLayout.addLayout(self.gridLayout)
+ self.mainLayout.addLayout(self.horizontalLayout)
+ self.verticalLayoutWidget_2 = QtWidgets.QWidget(parent=self.centralwidget)
+ self.verticalLayoutWidget_2.setGeometry(QtCore.QRect(1280, 0, 306, 751))
+ self.verticalLayoutWidget_2.setObjectName("verticalLayoutWidget_2")
+ self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget_2)
+ self.verticalLayout.setContentsMargins(0, 0, 0, 0)
+ self.verticalLayout.setObjectName("verticalLayout")
+ self.calendar_frame = QtWidgets.QFrame(parent=self.verticalLayoutWidget_2)
+ self.calendar_frame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
+ self.calendar_frame.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
+ self.calendar_frame.setObjectName("calendar_frame")
+ self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.calendar_frame)
+ self.verticalLayout_7.setObjectName("verticalLayout_7")
+ self.calendarlayout = QtWidgets.QVBoxLayout()
+ self.calendarlayout.setObjectName("calendarlayout")
+ self.verticalLayout_7.addLayout(self.calendarlayout)
+ self.verticalLayout.addWidget(self.calendar_frame)
+ self.frame_creation_progress = QtWidgets.QFrame(parent=self.verticalLayoutWidget_2)
+ self.frame_creation_progress.setObjectName("frame_creation_progress")
+ self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.frame_creation_progress)
+ self.verticalLayout_4.setSpacing(6)
+ self.verticalLayout_4.setObjectName("verticalLayout_4")
+ self.steps = QtWidgets.QFrame(parent=self.frame_creation_progress)
+ self.steps.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
+ self.steps.setFrameShadow(QtWidgets.QFrame.Shadow.Raised)
+ self.steps.setObjectName("steps")
+ self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.steps)
+ self.verticalLayout_3.setSpacing(0)
+ self.verticalLayout_3.setObjectName("verticalLayout_3")
+ self.groupBox_2 = QtWidgets.QGroupBox(parent=self.steps)
+ self.groupBox_2.setEnabled(True)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.groupBox_2.sizePolicy().hasHeightForWidth())
+ self.groupBox_2.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ self.groupBox_2.setFont(font)
+ self.groupBox_2.setObjectName("groupBox_2")
+ self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.groupBox_2)
+ self.verticalLayout_6.setObjectName("verticalLayout_6")
+ self.appdata_check = QtWidgets.QCheckBox(parent=self.groupBox_2)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ self.appdata_check.setFont(font)
+ self.appdata_check.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.appdata_check.setObjectName("appdata_check")
+ self.verticalLayout_6.addWidget(self.appdata_check)
+ self.media_check = QtWidgets.QCheckBox(parent=self.groupBox_2)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ self.media_check.setFont(font)
+ self.media_check.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.media_check.setObjectName("media_check")
+ self.verticalLayout_6.addWidget(self.media_check)
+ self.ids_check = QtWidgets.QCheckBox(parent=self.groupBox_2)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ self.ids_check.setFont(font)
+ self.ids_check.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.ids_check.setObjectName("ids_check")
+ self.verticalLayout_6.addWidget(self.ids_check)
+ self.verticalLayout_3.addWidget(self.groupBox_2)
+ self.groupBox = QtWidgets.QGroupBox(parent=self.steps)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Expanding)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.groupBox.sizePolicy().hasHeightForWidth())
+ self.groupBox.setSizePolicy(sizePolicy)
+ font = QtGui.QFont()
+ font.setPointSize(11)
+ font.setBold(True)
+ self.groupBox.setFont(font)
+ self.groupBox.setObjectName("groupBox")
+ self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox)
+ self.verticalLayout_5.setObjectName("verticalLayout_5")
+ self.media_checked = QtWidgets.QCheckBox(parent=self.groupBox)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ font.setItalic(False)
+ font.setUnderline(False)
+ font.setKerning(True)
+ font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferDefault)
+ self.media_checked.setFont(font)
+ self.media_checked.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.media_checked.setObjectName("media_checked")
+ self.verticalLayout_5.addWidget(self.media_checked)
+ self.media_edited_check = QtWidgets.QCheckBox(parent=self.groupBox)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ font.setItalic(False)
+ font.setUnderline(False)
+ font.setKerning(True)
+ font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferDefault)
+ self.media_edited_check.setFont(font)
+ self.media_edited_check.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.media_edited_check.setObjectName("media_edited_check")
+ self.verticalLayout_5.addWidget(self.media_edited_check)
+ self.app_created = QtWidgets.QCheckBox(parent=self.groupBox)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ font.setItalic(False)
+ font.setUnderline(False)
+ font.setKerning(True)
+ font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferDefault)
+ self.app_created.setFont(font)
+ self.app_created.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
+ self.app_created.setObjectName("app_created")
+ self.verticalLayout_5.addWidget(self.app_created)
+ self.btn_copy_adis_command = QtWidgets.QPushButton(parent=self.groupBox)
+ font = QtGui.QFont()
+ font.setPointSize(8)
+ font.setBold(False)
+ font.setItalic(False)
+ font.setUnderline(False)
+ font.setKerning(True)
+ font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferDefault)
+ self.btn_copy_adis_command.setFont(font)
+ self.btn_copy_adis_command.setStatusTip("")
+ self.btn_copy_adis_command.setWhatsThis("")
+ self.btn_copy_adis_command.setAccessibleDescription("")
+ self.btn_copy_adis_command.setAutoFillBackground(False)
+ icon1 = QtGui.QIcon()
+ icon1.addPixmap(QtGui.QPixmap("c:\\Users\\aky547\\GitHub\\SemesterapparatsManager\\src\\ui\\../../../../../../.designer/backup/icons/information.png"), QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off)
+ self.btn_copy_adis_command.setIcon(icon1)
+ self.btn_copy_adis_command.setCheckable(False)
+ self.btn_copy_adis_command.setChecked(False)
+ self.btn_copy_adis_command.setAutoDefault(False)
+ self.btn_copy_adis_command.setObjectName("btn_copy_adis_command")
+ self.verticalLayout_5.addWidget(self.btn_copy_adis_command)
+ self.verticalLayout_3.addWidget(self.groupBox)
+ self.verticalLayout_4.addWidget(self.steps)
+ self.verticalLayout.addWidget(self.frame_creation_progress)
+ MainWindow.setCentralWidget(self.centralwidget)
+ self.menubar = QtWidgets.QMenuBar(parent=MainWindow)
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1590, 22))
+ self.menubar.setObjectName("menubar")
+ self.menuDatei = QtWidgets.QMenu(parent=self.menubar)
+ self.menuDatei.setObjectName("menuDatei")
+ self.menuEinstellungen = QtWidgets.QMenu(parent=self.menubar)
+ self.menuEinstellungen.setObjectName("menuEinstellungen")
+ self.menuHelp = QtWidgets.QMenu(parent=self.menubar)
+ self.menuHelp.setObjectName("menuHelp")
+ MainWindow.setMenuBar(self.menubar)
+ self.statusBar = QtWidgets.QStatusBar(parent=MainWindow)
+ self.statusBar.setObjectName("statusBar")
+ MainWindow.setStatusBar(self.statusBar)
+ self.actionBeenden = QtGui.QAction(parent=MainWindow)
+ self.actionBeenden.setMenuRole(QtGui.QAction.MenuRole.QuitRole)
+ self.actionBeenden.setShortcutVisibleInContextMenu(True)
+ self.actionBeenden.setObjectName("actionBeenden")
+ self.actionEinstellungen = QtGui.QAction(parent=MainWindow)
+ self.actionEinstellungen.setShortcutVisibleInContextMenu(True)
+ self.actionEinstellungen.setObjectName("actionEinstellungen")
+ self.actionDokumentation = QtGui.QAction(parent=MainWindow)
+ self.actionDokumentation.setShortcutContext(QtCore.Qt.ShortcutContext.ApplicationShortcut)
+ self.actionDokumentation.setObjectName("actionDokumentation")
+ self.actionAbout = QtGui.QAction(parent=MainWindow)
+ self.actionAbout.setMenuRole(QtGui.QAction.MenuRole.AboutRole)
+ self.actionAbout.setObjectName("actionAbout")
+ self.actionDokumentation_lokal = QtGui.QAction(parent=MainWindow)
+ self.actionDokumentation_lokal.setObjectName("actionDokumentation_lokal")
+ self.menuDatei.addAction(self.actionBeenden)
+ self.menuEinstellungen.addAction(self.actionEinstellungen)
+ self.menuHelp.addAction(self.actionDokumentation_lokal)
+ self.menuHelp.addAction(self.actionAbout)
+ self.menubar.addAction(self.menuDatei.menuAction())
+ self.menubar.addAction(self.menuEinstellungen.menuAction())
+ self.menubar.addAction(self.menuHelp.menuAction())
+ self.label_9.setBuddy(self.prof_tel_nr)
+ self.label_3.setBuddy(self.prof_title)
+ self.label_2.setBuddy(self.drpdwn_app_nr)
+ self.label_8.setBuddy(self.prof_mail)
+ self.label_10.setBuddy(self.app_fach)
+ self.label_12.setBuddy(self.prof_id_adis)
+ self.label_13.setBuddy(self.apparat_id_adis)
+ self.label_4.setBuddy(self.drpdwn_prof_name)
+ self.label_5.setBuddy(self.app_name)
+ self.label_6.setBuddy(self.sem_year)
+
+ self.retranslateUi(MainWindow)
+ self.tabWidget.setCurrentIndex(0)
+ QtCore.QMetaObject.connectSlotsByName(MainWindow)
+ MainWindow.setTabOrder(self.drpdwn_app_nr, self.drpdwn_prof_name)
+ MainWindow.setTabOrder(self.drpdwn_prof_name, self.prof_mail)
+ MainWindow.setTabOrder(self.prof_mail, self.prof_tel_nr)
+ MainWindow.setTabOrder(self.prof_tel_nr, self.app_name)
+ MainWindow.setTabOrder(self.app_name, self.app_fach)
+ MainWindow.setTabOrder(self.app_fach, self.sem_sommer)
+ MainWindow.setTabOrder(self.sem_sommer, self.sem_winter)
+ MainWindow.setTabOrder(self.sem_winter, self.sem_year)
+ MainWindow.setTabOrder(self.sem_year, self.check_eternal_app)
+ MainWindow.setTabOrder(self.check_eternal_app, self.btn_add_document)
+ MainWindow.setTabOrder(self.btn_add_document, self.btn_open_document)
+ MainWindow.setTabOrder(self.btn_open_document, self.check_file)
+ MainWindow.setTabOrder(self.check_file, self.check_send_mail)
+ MainWindow.setTabOrder(self.check_send_mail, self.btn_apparat_save)
+ MainWindow.setTabOrder(self.btn_apparat_save, self.btn_apparat_apply)
+ MainWindow.setTabOrder(self.btn_apparat_apply, self.chkbx_show_del_media)
+ MainWindow.setTabOrder(self.chkbx_show_del_media, self.btn_reserve)
+ MainWindow.setTabOrder(self.btn_reserve, self.select_action_box)
+ MainWindow.setTabOrder(self.select_action_box, self.prof_id_adis)
+ MainWindow.setTabOrder(self.prof_id_adis, self.apparat_id_adis)
+ MainWindow.setTabOrder(self.apparat_id_adis, self.automation_add_selected_books)
+ MainWindow.setTabOrder(self.automation_add_selected_books, self.saveandcreate)
+
+ def retranslateUi(self, MainWindow):
+ _translate = QtCore.QCoreApplication.translate
+ MainWindow.setWindowTitle(_translate("MainWindow", "Semesterapparatsmanagement"))
+ self.create_document.setToolTip(_translate("MainWindow", "Erstellt die Übersicht, welche am Regal ausgehängt werden kann"))
+ self.create_document.setText(_translate("MainWindow", "Übersicht erstellen"))
+ self.create_new_app.setText(_translate("MainWindow", "neu. App anlegen"))
+ self.cancel_active_selection.setText(_translate("MainWindow", "Auswahl abbrechen"))
+ self.tableWidget_apparate.setSortingEnabled(False)
+ item = self.tableWidget_apparate.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "AppNr"))
+ item = self.tableWidget_apparate.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "App Name"))
+ item = self.tableWidget_apparate.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Professor"))
+ item = self.tableWidget_apparate.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "gültig bis"))
+ item = self.tableWidget_apparate.horizontalHeaderItem(4)
+ item.setText(_translate("MainWindow", "Dauerapparat"))
+ item = self.tableWidget_apparate.horizontalHeaderItem(5)
+ item.setText(_translate("MainWindow", "KontoNr"))
+ self.chkbx_show_del_media.setText(_translate("MainWindow", "gel. Medien anzeigen"))
+ self.btn_reserve.setText(_translate("MainWindow", "im Apparat?"))
+ self.label_info.setText(_translate("MainWindow", "Medien werden hinzugefügt"))
+ self.progress_label.setText(_translate("MainWindow", "Medium x/y"))
+ self.label_20.setText(_translate("MainWindow", "Medien werden geprüft"))
+ self.avail_status.setText(_translate("MainWindow", "TextLabel"))
+ self.automation_add_selected_books.setText(_translate("MainWindow", "Ausgewählte als verfügbar markieren"))
+ self.tableWidget_apparat_media.setSortingEnabled(True)
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Buchtitel"))
+ item.setToolTip(_translate("MainWindow", "Es kann sein, dass der Buchtitel leer ist, dies kommt vor, wenn der Titel nicht passend formatiert ist"))
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Signatur"))
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Auflage"))
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "Autor"))
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(4)
+ item.setText(_translate("MainWindow", "im Apparat?"))
+ item.setToolTip(_translate("MainWindow", "Diese Angabe ist nicht zuverlässig. Ist das ❌ vorhanden, kann das Medium im Apparat sein, aber aufgrund eines Bugs nicht gefunden worden"))
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(5)
+ item.setText(_translate("MainWindow", "Vorgemerkt"))
+ item = self.tableWidget_apparat_media.horizontalHeaderItem(6)
+ item.setText(_translate("MainWindow", "Link"))
+ self.label.setText(_translate("MainWindow", " Medienliste"))
+ self.app_group_box.setTitle(_translate("MainWindow", "Apparatsdetails"))
+ item = self.document_list.horizontalHeaderItem(0)
+ item.setText(_translate("MainWindow", "Dokumentname"))
+ item = self.document_list.horizontalHeaderItem(1)
+ item.setText(_translate("MainWindow", "Dateityp"))
+ item = self.document_list.horizontalHeaderItem(2)
+ item.setText(_translate("MainWindow", "Neu?"))
+ item = self.document_list.horizontalHeaderItem(3)
+ item.setText(_translate("MainWindow", "path"))
+ self.appname_mand.setText(_translate("MainWindow", "*"))
+ self.profname_mand.setText(_translate("MainWindow", "*"))
+ self.fach_mand.setText(_translate("MainWindow", "*"))
+ self.btn_apparat_apply.setText(_translate("MainWindow", "Aktualisieren"))
+ self.label_9.setText(_translate("MainWindow", "Tel"))
+ self._mand.setText(_translate("MainWindow", "*"))
+ self.check_eternal_app.setText(_translate("MainWindow", "Dauerapparat"))
+ self.sem_sommer.setText(_translate("MainWindow", "Sommer"))
+ self.drpdwn_prof_name.setToolTip(_translate("MainWindow", "Nachname, Vorname"))
+ self.mail_mand.setText(_translate("MainWindow", "*"))
+ self.label_3.setStatusTip(_translate("MainWindow", "sdvosdvsdv"))
+ self.label_3.setText(_translate("MainWindow", "Prof. Titel"))
+ self.label_2.setText(_translate("MainWindow", "Apparatsnummer"))
+ self.label_8.setText(_translate("MainWindow", "Mail"))
+ self.label_10.setText(_translate("MainWindow", "Fach"))
+ self.label_12.setText(_translate("MainWindow", "Prof-ID-aDIS"))
+ self.label_13.setText(_translate("MainWindow", "Apparat-ID-aDIS"))
+ self.sem_year.setPlaceholderText(_translate("MainWindow", "2023"))
+ self.check_send_mail.setText(_translate("MainWindow", "Mail senden"))
+ self.sem_winter.setText(_translate("MainWindow", "Winter"))
+ self.label_4.setText(_translate("MainWindow", "Prof. Name"))
+ self.telnr_mand.setText(_translate("MainWindow", "*"))
+ self.btn_apparat_save.setText(_translate("MainWindow", "Speichern"))
+ self.label_5.setText(_translate("MainWindow", "Apparatsname"))
+ self.label_6.setText(_translate("MainWindow", "Semester"))
+ self.valid_check_profname.setStatusTip(_translate("MainWindow", "Format: Nachname, Vorname"))
+ self.valid_check_mail.setStatusTip(_translate("MainWindow", "mail@irgendwas.wasanderes"))
+ self.saveandcreate.setText(_translate("MainWindow", "Speichern und anlegen"))
+ self.btn_add_document.setText(_translate("MainWindow", "Dokument hinzufügen"))
+ self.btn_open_document.setText(_translate("MainWindow", "Dokument öffnen"))
+ self.check_file.setToolTip(_translate("MainWindow", "Abhängig von der Anzahl der Medien kann die Suche sehr lange dauern"))
+ self.check_file.setText(_translate("MainWindow", "Medien aus Dokument\n"
+" hinzufügen"))
+ self.btn_extract_data_from_document.setToolTip(_translate("MainWindow", "Die Apparatsdetails werden aus dem Dokument gelesen und eingetragen\n"
+"Einige Angaben müssen ggf angepasst werden"))
+ self.btn_extract_data_from_document.setText(_translate("MainWindow", "Daten aus Dokument\n"
+"übernehmen"))
+ self.add_medium.setText(_translate("MainWindow", "Medien hinzufügen"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.createApparat), _translate("MainWindow", "Anlegen"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.search_statistics), _translate("MainWindow", "Suchen / Statistik"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.elsatab), _translate("MainWindow", "ELSA"))
+ self.label_21.setText(_translate("MainWindow", "Aktion:"))
+ self.select_action_box.setItemText(0, _translate("MainWindow", "Nutzer anlegen"))
+ self.select_action_box.setItemText(1, _translate("MainWindow", "Nutzer bearbeiten"))
+ self.select_action_box.setItemText(2, _translate("MainWindow", "Lehrperson bearbeiten"))
+ self.admin_action.setTitle(_translate("MainWindow", "GroupBox"))
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.admin), _translate("MainWindow", "Admin"))
+ self.groupBox_2.setTitle(_translate("MainWindow", "Software"))
+ self.appdata_check.setText(_translate("MainWindow", "Apparatsdaten eingegeben"))
+ self.media_check.setText(_translate("MainWindow", "Medien hinzugefügt / importiert"))
+ self.ids_check.setText(_translate("MainWindow", "Prof-ID und Apparat-ID eingetragen"))
+ self.groupBox.setTitle(_translate("MainWindow", "aDIS"))
+ self.media_checked.setText(_translate("MainWindow", "Medien geprüft"))
+ self.media_edited_check.setText(_translate("MainWindow", "Medien bearbeitet"))
+ self.app_created.setText(_translate("MainWindow", "Apparat angelegt"))
+ self.btn_copy_adis_command.setToolTip(_translate("MainWindow", "Hier klicken, um die aDIS Abfrage in die Zwischenablage zu kopieren"))
+ self.btn_copy_adis_command.setText(_translate("MainWindow", " aDIS Abfrage in Zwischenablage kopieren"))
+ self.menuDatei.setTitle(_translate("MainWindow", "Datei"))
+ self.menuEinstellungen.setTitle(_translate("MainWindow", "Bearbeiten"))
+ self.menuHelp.setTitle(_translate("MainWindow", "Help"))
+ self.actionBeenden.setText(_translate("MainWindow", "Beenden"))
+ self.actionBeenden.setShortcut(_translate("MainWindow", "Ctrl+Q"))
+ self.actionEinstellungen.setText(_translate("MainWindow", "Einstellungen"))
+ self.actionEinstellungen.setShortcut(_translate("MainWindow", "Alt+S"))
+ self.actionDokumentation.setText(_translate("MainWindow", "Dokumentation (online)"))
+ self.actionDokumentation.setShortcut(_translate("MainWindow", "F1"))
+ self.actionAbout.setText(_translate("MainWindow", "About"))
+ self.actionDokumentation_lokal.setText(_translate("MainWindow", "Dokumentation (lokal)"))
+ self.actionDokumentation_lokal.setShortcut(_translate("MainWindow", "F1"))
diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py
index dde4ee6..d2ad1d5 100644
--- a/src/ui/userInterface.py
+++ b/src/ui/userInterface.py
@@ -6,7 +6,8 @@ import sys
import tempfile
import webbrowser
from pathlib import Path
-from typing import Any
+from typing import Any, Union
+
from natsort import natsorted
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QThread
@@ -25,6 +26,7 @@ from src.logic import (
BookData,
csv_to_list,
word_to_semap,
+ SemapDocument,
Prof,
Apparat,
)
@@ -87,6 +89,9 @@ class Ui(Ui_Semesterapparat):
self.check_file.clicked.connect( # type:ignore
self.btn_check_file_threaded
) # default: self.add_media_from_file
+ self.btn_extract_data_from_document.clicked.connect( # type:ignore
+ self.import_data_from_document
+ )
self.create_new_app.clicked.connect(self.btn_create_new_apparat) # type:ignore
self.btn_apparat_save.clicked.connect(lambda: self.btn_save_apparat(True)) # type:ignore
self.btn_apparat_apply.clicked.connect(self.update_apparat) # type:ignore
@@ -136,7 +141,7 @@ class Ui(Ui_Semesterapparat):
self.prof_tel_nr.setValidator(
QtGui.QRegularExpressionValidator(QtCore.QRegularExpression(r"^\d{3,14}"))
)
- # #print(self.prof_tel_nr.maxLength())
+ # #logger.debug(self.prof_tel_nr.maxLength())
self.app_fach.setValidator( # validator to allow typing in the app_fach field
QtGui.QRegularExpressionValidator(
QtCore.QRegularExpression(r"[a-zA-Z0-9\s\W]+")
@@ -154,7 +159,7 @@ class Ui(Ui_Semesterapparat):
)
self.tableWidget_apparate.doubleClicked.connect(self.load_app_data) # type:ignore
- # #print(f"user:{self.active_user}")
+ # #logger.debug(f"user:{self.active_user}")
userrole = self.db.getRole(self.active_user)
# hide admin interface when non-admin is logged in
if userrole == "admin":
@@ -201,7 +206,7 @@ class Ui(Ui_Semesterapparat):
self.validate_thread.start()
self.add_medium.setEnabled(False)
self.docu = DocumentationThread()
- self.docu.start()
+
self.actionDokumentation_lokal.triggered.connect(self.open_documentation) # type:ignore
# get all current apparats and cache them in a list
@@ -251,6 +256,8 @@ class Ui(Ui_Semesterapparat):
self.steps.hide()
+ self.valid_check_semester.clicked.connect(self.display_valid_semester) # type:ignore
+
def create_doc(self):
result = self.confirm_popup(
"Mit dem Klick auf Okay wird eine Übersicht aller aktiven Semesterapparate erstellt und an den FollowME Drucker gesendet. Es kann bis zu 10 Minuten dauern, bis das document im Drucker angezeigt wird",
@@ -258,14 +265,14 @@ class Ui(Ui_Semesterapparat):
)
logger.debug(f"Result: {result}")
if result == 1:
- # print("Creating document")
+ # logger.debug("Creating document")
apparats = self.apparats
apps = []
for apparat in apparats:
prof = self.db.getProf(apparat[2])
data = (apparat[4], f"{prof.lastname} ({apparat[1]})")
apps.append(data)
- # print(apps)
+ # logger.debug(apps)
logger.info("Using apparats: {}", apps)
doc = SemesterDocument(
semester=Semester().value,
@@ -350,6 +357,8 @@ class Ui(Ui_Semesterapparat):
def open_documentation(self):
logger.info("Opening Documentation")
+ if not self.docu.isRunning():
+ self.docu.start()
webbrowser.open("http://localhost:8000")
def update_calendar(self, data):
@@ -372,7 +381,7 @@ class Ui(Ui_Semesterapparat):
statistics.updateCalendar.connect(self.update_calendar)
stats_layout.addWidget(statistics)
- # #print("searchpage")
+ # #logger.debug("searchpage")
if self.tabWidget.currentIndex() == 0: # Apparate
# clear all entries from the table
self.tableWidget_apparate.setRowCount(0)
@@ -390,7 +399,7 @@ class Ui(Ui_Semesterapparat):
widget.deleteLater()
elsa_layout.addWidget(ElsaDialog())
- # print("added")
+ # logger.debug("added")
pass
def generateSemester(self, today=False):
@@ -433,9 +442,9 @@ class Ui(Ui_Semesterapparat):
self.prof_mail.setText(appdata.prof.mail)
self.prof_tel_nr.setText(appdata.prof.telnr)
self.app_name.setText(appdata.apparat.name)
- # #print("changing dropdown app_fach from '' to ", appdata.app_fach)
+ # #logger.debug("changing dropdown app_fach from '' to ", appdata.app_fach)
self.app_fach.setCurrentText(appdata.apparat.subject)
- # #print("changed dropdown app_fach to ", self.app_fach.currentText())
+ # #logger.debug("changed dropdown app_fach to ", self.app_fach.currentText())
self.sem_year.setText(appdata.apparat.get_semester.split(" ")[1])
match appdata.apparat.get_semester.split(" ")[0]:
case "SoSe":
@@ -500,7 +509,7 @@ class Ui(Ui_Semesterapparat):
return popup.result()
def thread_check(self):
- # #print("Thread started")
+ # #logger.debug("Thread started")
self.prof_mail.textChanged.connect(self.validate_prof_mail)
self.drpdwn_prof_name.editTextChanged.connect(self.validate_prof_name)
self.prof_tel_nr.textChanged.connect(self.validate_prof_tel)
@@ -564,22 +573,24 @@ class Ui(Ui_Semesterapparat):
self.__setValidState(self.valid_check_app_fach, 0, self.fach_mand, 4)
def validate_semester(self):
- if (
- self.app_group_box.isEnabled()
- and (
- (self.sem_sommer.isChecked() or self.sem_winter.isChecked())
- and self.sem_year.text() != ""
- and len(self.sem_year.text())
- >= 2 # check if the year is at least 2 digits long
- )
- or self.check_eternal_app.isChecked()
- ):
+ valid = (self.sem_sommer.isChecked() or self.sem_winter.isChecked()) and len(
+ self.sem_year.text()
+ ) >= 2
+ if valid or self.check_eternal_app.isChecked():
self.__setValidState(self.valid_check_semester, 1, self._mand, 5)
self.check_eternal_app.setEnabled(True)
else:
self.__setValidState(self.valid_check_semester, 0, self._mand, 5)
self.check_eternal_app.setEnabled(False)
+ def display_valid_semester(self):
+ print(f"""
+ Semester: {self.sem_year.text()}
+ Sommer: {self.sem_sommer.isChecked()}
+ Winter: {self.sem_winter.isChecked()}
+ Eternal: {self.check_eternal_app.isChecked()}
+ """)
+
def change_state(self, index, state):
global valid_input
valid_input = list(valid_input)
@@ -706,12 +717,12 @@ class Ui(Ui_Semesterapparat):
self.drpdwn_prof_name.clear()
# set drop down menu for apparat numbers to only available numbers
taken_app_nrs = self.db.getUnavailableApparatNumbers()
- self.drpdwn_app_nr.addItems([str(i) for i in APP_NRS if i not in taken_app_nrs])
+ self.drpdwn_app_nr.addItems([str(i) for i in APP_NRS if i not in taken_app_nrs]) # type:ignore
valid_input = (0, 0, 0, 0, 0, 0)
self.populate_prof_dropdown()
- def update_progress_label(self, curr, total):
+ def update_progress_label(self, curr: int, total: int):
text = f"Medium {curr}/{total}"
logger.info(text)
self.progress_label.setText(text)
@@ -769,7 +780,7 @@ class Ui(Ui_Semesterapparat):
bookGrabber.start()
while bookGrabber.isRunning():
- # #print("waiting for thread to finish")
+ # #logger.debug("waiting for thread to finish")
QtWidgets.QApplication.processEvents()
# self.__clear_fields()
@@ -814,7 +825,7 @@ class Ui(Ui_Semesterapparat):
# thread = QThread()
appnumber = self.active_apparat
- # #print(links)
+ # #logger.debug(links)
self.availChecker = AvailChecker(links, appnumber, books=books)
# availcheck.moveToThread(thread)
# availcheck.finished.connect(thread.quit)
@@ -863,7 +874,7 @@ class Ui(Ui_Semesterapparat):
app_id, prof_id, deleted
)
- # # #print(books)
+ # # #logger.debug(books)
# take the dataclass from the tuple
# booklist:list[BookData]=[book[0] for book in books]
self.tableWidget_apparat_media.setRowCount(0)
@@ -872,7 +883,7 @@ class Ui(Ui_Semesterapparat):
book_data = book["bookdata"]
availability = book["available"]
# bd = BookData().from_string(book)
- # # #print(bd, type(bd))
+ # # #logger.debug(bd, type(bd))
# create a new row below the last one
self.tableWidget_apparat_media.insertRow(
self.tableWidget_apparat_media.rowCount()
@@ -966,11 +977,11 @@ class Ui(Ui_Semesterapparat):
self.drpdwn_prof_name.addItem(prof)
def add_document(self):
- # #print("Add document")
+ # #logger.debug("Add document")
picker = FilePicker()
files = picker.pick_files()
for file in files:
- # #print(file)
+ # #logger.debug(file)
filename = file.split("/")[-1]
filetype = filename.split(".")[-1]
self.document_list.insertRow(0)
@@ -1022,7 +1033,7 @@ class Ui(Ui_Semesterapparat):
dialog = QtWidgets.QDialog()
frame = parsed_titles_ui()
frame.setupUi(dialog)
- dialogger.show()
+ dialog.show()
frame.signatures = signatures
frame.populate_table()
frame.progressBar.setMaximum(len(signatures))
@@ -1042,7 +1053,7 @@ class Ui(Ui_Semesterapparat):
else:
# if file is selected, check for books in the file
if self.document_list.currentRow() != -1:
- # #print("File selected")
+ # #logger.debug("File selected")
file = self.document_list.item(
self.document_list.currentRow(), 3
).text()
@@ -1096,10 +1107,53 @@ class Ui(Ui_Semesterapparat):
bookdata=book, app_id=app_id, prof_id=prof_id
)
self.update_app_media_list()
- # #print(len(signatures))
+ # #logger.debug(len(signatures))
+
+ def extract_document_data(self) -> Union[None, list[str], SemapDocument]:
+ file_type = self.document_list.item(self.document_list.currentRow(), 1).text()
+ file_location = self.document_list.item(
+ self.document_list.currentRow(), 3
+ ).text()
+ file_name = self.document_list.item(self.document_list.currentRow(), 0).text()
+ file = file_location
+ logger.info("File selected: {}, {}", file_name, file_location)
+ if file_location == "Database":
+ # create warning, then return
+ self.confirm_popup(
+ "Dateien aus der Datenbank werden nicht unterstützt!",
+ title="Fehler",
+ )
+ return None
+ if file_type == "pdf":
+ # Todo: implement parser here
+ self.confirm_popup("PDF Dateien werden nicht unterstützt!", title="Fehler")
+ return
+ if file_type == "csv":
+ signatures = csv_to_list(file)
+ # add the data to the database
+ return signatures
+ if file_type == "docx":
+ data = word_to_semap(file)
+ logger.info("Converted data from semap file")
+ logger.debug("Got the data: {}", data)
+
+ return data
+
+ def import_data_from_document(self):
+ global valid_input
+ data = self.extract_document_data()
+ if data is None:
+ return
+ if isinstance(data, list):
+ return
+
+ self.prof_mail.setText(data.mail)
+ self.prof_tel_nr.setText(str(data.phoneNumber))
+ self.app_name.setText(data.title)
+ self.app_fach.setCurrentText(data.subject)
def btn_check_file_threaded(self):
- # #print("Checking file")
+ # #logger.debug("Checking file")
# get active app_id and prof_id
self.tableWidget_apparate.setEnabled(False)
self.tableWidget_apparate.setToolTip(
@@ -1109,18 +1163,25 @@ class Ui(Ui_Semesterapparat):
logger.debug(self.profdata)
prof_id = self.db.getProfId(self.profdata)
- logger.debug(prof_id)
+ logger.debug("Prof id: {}", prof_id)
# check if apparat in database
-
+ if prof_id is None:
+ prof = Prof(
+ fullname=self.drpdwn_prof_name.currentText(),
+ telnr=self.prof_tel_nr.text(),
+ mail=self.prof_mail.text(),
+ firstname=self.drpdwn_prof_name.currentText().split(", ")[1],
+ lastname=self.drpdwn_prof_name.currentText().split(", ")[0],
+ )
+ self.db.createProf(prof)
# if app_id not in database, create apparat
- created = False
if not self.db.checkApparatExistsById(app_id):
logger.info("Apparat does not exist, creating new apparat")
# create apparat
- # #print("Creating apparat")
+ # #logger.debug("Creating apparat")
if not self.btn_save_apparat(False):
return
- created = True
+
if self.document_list.rowCount() == 0:
logger.info("No file selected")
self.tableWidget_apparate.setEnabled(True)
@@ -1128,48 +1189,27 @@ class Ui(Ui_Semesterapparat):
return
else:
# if file is selected, check for books in the file
- # #print("File selected")
- file_type = self.document_list.item(
- self.document_list.currentRow(), 1
- ).text()
- file_location = self.document_list.item(
- self.document_list.currentRow(), 3
- ).text()
- file_name = self.document_list.item(
- self.document_list.currentRow(), 0
- ).text()
- logger.info("File selected: {}, {}", file_name, file_location)
- if file_location == "Database":
- logger.debug("Using file from database")
- file = recreateFile(file_name, app_id, file_type, open=False)
- logger.debug("recreated file from database")
- else:
- logger.debug("File not in database")
- if not created:
- logger.debug("File was not created, ")
- self.add_files(prof_id)
- if file_type == "pdf":
- # Todo: implement parser here
- self.confirm_popup(
- "PDF Dateien werden nicht unterstützt!", title="Fehler"
- )
- return
- if file_type == "csv":
- signatures = csv_to_list(file)
- # add the data to the database
- if file_type == "docx":
- data = word_to_semap(file)
- logger.info("Converted data from semap file")
- logger.debug("Got the data: {}", data)
- signatures = data.signatures
- logger.info("Got the signatures: {}", signatures)
+ # #logger.debug("File selected")
+
if prof_id is None:
prof_id = self.db.getProfId(self.profdata)
- # print("Prof ID is None", prof_id)
- autoGrabber = BookGrabber(self.active_apparat)
+ # logger.debug("Prof ID is None", prof_id)
+ document = self.extract_document_data()
+ if document is None:
+ logger.error("Document is None")
+ elif isinstance(document, SemapDocument):
+ signatures = document.signatures
+ else:
+ signatures = document
+ autoGrabber = BookGrabber()
autoGrabber.add_values(
- mode="ARRAY", app_id=app_id, prof_id=prof_id, data=signatures
+ mode="ARRAY",
+ app_id=int(app_id),
+ prof_id=int(prof_id),
+ data=signatures,
+ any_book=True,
+ exact=True,
)
self.label_info.show()
self.progress_label.show()
@@ -1178,15 +1218,13 @@ class Ui(Ui_Semesterapparat):
# self.autoGrabber.finished.connect(self.autoGrabber.deleteLater)
autoGrabber.finished.connect(self.hide_progress_label)
autoGrabber.finished.connect(self.unlock_apparate)
-
autoGrabber.updateSignal.connect(self.update_progress_label)
# worker.finished.connect(worker.deleteLater)
autoGrabber.start()
- while autoGrabber.isRunning():
- QtWidgets.QApplication.processEvents()
+ self.bookGrabber.append(autoGrabber)
# refresh book table
- self.update_app_media_list()
+ logger.debug("Finished adding media")
# end of thread
# self.autoGrabber.exit()
# self.__clear_fields()
@@ -1271,7 +1309,7 @@ class Ui(Ui_Semesterapparat):
pid=appd.prof.fullname,
)
if clear_fields:
- # #print("clearing fields")
+ # #logger.debug("clearing fields")
self.__clear_fields()
return True
@@ -1398,7 +1436,7 @@ class Ui(Ui_Semesterapparat):
appnr = self.tableWidget_apparate.item(tableposition, 0).text()
if reminder.result() == QtWidgets.QDialogger.DialogCode.Accepted:
data = reminder.return_message()
- # #print(data)
+ # #logger.debug(data)
self.db.addMessage(
data,
self.active_user,
@@ -1418,7 +1456,7 @@ class Ui(Ui_Semesterapparat):
def open_reminder(self):
selected_date = self.calendarWidget.selectedDate().toString("yyyy-MM-dd")
- # # #print(selected_date)
+ # # #logger.debug(selected_date)
messages = self.db.getMessages(selected_date)
if messages == []:
return
@@ -1431,13 +1469,13 @@ class Ui(Ui_Semesterapparat):
)
def open_settings(self):
- # print(settings.dict())
+ # logger.debug(settings.dict())
settingsUI = Settings(self.active_user)
settingsUI.exec()
if settingsUI.result() == QtWidgets.QDialogger.DialogCode.Accepted:
settingsUI.save()
- # print(settings.dict())
+ # logger.debug(settings.dict())
# self.reload()
@@ -1563,7 +1601,7 @@ class Ui(Ui_Semesterapparat):
signature=signature,
prof_id=self.db.getProfId(self.profdata),
)
- # print(medium.adis_idn, medium.signature)
+ # logger.debug(medium.adis_idn, medium.signature)
def edit_medium(self):
book = self.tableWidget_apparat_media.item(
@@ -1590,10 +1628,10 @@ class Ui(Ui_Semesterapparat):
widget.exec()
if widget.result() == QtWidgets.QDialogger.DialogCode.Accepted:
data = bookedit.get_data()
- # #print(data)
+ # #logger.debug(data)
self.db.updateBookdata(bookdata=data, book_id=book_id)
# self.db.update_bookdata(data)
- # #print("accepted")
+ # #logger.debug("accepted")
self.update_app_media_list()
else:
return
@@ -1617,7 +1655,7 @@ class Ui(Ui_Semesterapparat):
)
message = f'Soll das Medium "{self.tableWidget_apparat_media.item(self.tableWidget_apparat_media.currentRow(), 0).text()}" wirklich gelöscht werden?'
state = self.confirm_popup(message, title="Löschen?")
- # #print(state)
+ # #logger.debug(state)
if state == 1:
self.db.deleteBook(book_id)
self.update_app_media_list()
@@ -1629,7 +1667,7 @@ class Ui(Ui_Semesterapparat):
for r in ranges:
for row in range(r.topRow(), r.bottomRow() + 1):
rows.append(row)
- # #print(rows)
+ # #logger.debug(rows)
message = f"Sollen die {len(rows)} Medien wirklich gelöscht werden?"
state = self.confirm_popup(message, title="Löschen?")
if state == 1:
@@ -1649,12 +1687,12 @@ class Ui(Ui_Semesterapparat):
# return data from dialog if ok is pressed
if framework.result() == QtWidgets.QDialogger.DialogCode.Accepted:
data = framework.get_data()
- # #print(data)
+ # #logger.debug(data)
# return data
selected_apparat_id = self.tableWidget_apparate.item(
self.tableWidget_apparate.currentRow(), 0
).text()
- # #print(selected_apparat_id)
+ # #logger.debug(selected_apparat_id)
self.db.setNewSemesterDate(
selected_apparat_id, data["semester"], dauerapp=data["dauerapp"]
@@ -1725,7 +1763,7 @@ class Ui(Ui_Semesterapparat):
).text()
message = f"Soll der Apparat {selected_apparat_id} wirklich gelöscht werden?"
state = self.confirm_popup(message, title="Löschen?")
- # #print(state)
+ # #logger.debug(state)
logger.info("Result state: {}", state)
if state == 1:
logger.debug("Deleting apparat {}", selected_apparat_id)
@@ -1737,7 +1775,7 @@ class Ui(Ui_Semesterapparat):
self.apparats.remove(apparat)
break
self.old_apparats = self.apparats
- # #print(self.apparats)
+ # #logger.debug(self.apparats)
# remove the row from the table
self.tableWidget_apparate.removeRow(self.tableWidget_apparate.currentRow())
# send mail to prof
@@ -1745,8 +1783,8 @@ class Ui(Ui_Semesterapparat):
def launch_gui():
- # #print("trying to login")
- # #print("checking if database available")
+ # #logger.debug("trying to login")
+ # #logger.debug("checking if database available")
logger.info("Starting login dialog")
app = QtWidgets.QApplication(sys.argv)
@@ -1758,11 +1796,11 @@ def launch_gui():
if ui.lresult == 1:
# if login is successful, open main window
# show login dialog
- # #print(ui.lusername)
+ # #logger.debug(ui.lusername)
MainWindow = QtWidgets.QMainWindow()
aui = Ui(MainWindow, username=ui.lusername)
- # #print(aui.active_user)
+ # #logger.debug(aui.active_user)
MainWindow.show()
# atexit.register()
atexit.register(tempdelete)
@@ -1779,7 +1817,7 @@ def launch_gui():
if __name__ == "__main__":
- # #print("This is the main window")
+ # #logger.debug("This is the main window")
# app = QtWidgets.QApplication(sys.argv)
# window = MainWindow()
# app.exec()
diff --git a/src/ui/widgets/searchPage.py b/src/ui/widgets/searchPage.py
index 68d9c48..5606d84 100644
--- a/src/ui/widgets/searchPage.py
+++ b/src/ui/widgets/searchPage.py
@@ -83,7 +83,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
apparats.append(self.tableWidget.item(row.row(), 1).text())
for apparat in apparats:
apparat_id = self.db.getApparatId(apparat)
- self.db.restoreApparat(apparat_id)
+ self.db.restoreApparat(apparat_id, apparat)
# remove the red color from the row
# get row where the apparat is
row = self.tableWidget.findItems(apparat, QtCore.Qt.MatchFlag.MatchExactly)[
diff --git a/src/utils/blob.py b/src/utils/blob.py
index c28636a..f2c8070 100644
--- a/src/utils/blob.py
+++ b/src/utils/blob.py
@@ -1,4 +1,4 @@
-def create_blob(file):
+def create_blob(file: str):
"""
Creates a blob from a file.
"""
diff --git a/src/utils/pickles.py b/src/utils/pickles.py
index cb5a84f..e943a0d 100644
--- a/src/utils/pickles.py
+++ b/src/utils/pickles.py
@@ -1,9 +1,10 @@
import pickle
+from typing import Any
-def load_pickle(data):
+def load_pickle(data: Any):
return pickle.loads(data)
-def dump_pickle(data):
+def dump_pickle(data: Any):
return pickle.dumps(data)