@@ -17,7 +17,7 @@ from PyQt6.QtCore import QDate, QThread
|
|||||||
from PyQt6.QtGui import QColor, QRegularExpressionValidator
|
from PyQt6.QtGui import QColor, QRegularExpressionValidator
|
||||||
|
|
||||||
from src.backend.admin_console import AdminCommands
|
from src.backend.admin_console import AdminCommands
|
||||||
from src.backend.create_file import recreateFile
|
from src.backend.create_file import recreateElsaFile, recreateFile
|
||||||
from src.backend.database import Database
|
from src.backend.database import Database
|
||||||
from src.backend.delete_temp_contents import delete_temp_contents
|
from src.backend.delete_temp_contents import delete_temp_contents
|
||||||
from src.backend.semester import generateSemesterByDate
|
from src.backend.semester import generateSemesterByDate
|
||||||
@@ -26,11 +26,11 @@ from src.logic.constants import APP_NRS, PROF_TITLES
|
|||||||
from src.logic.csvparser import csv_to_list
|
from src.logic.csvparser import csv_to_list
|
||||||
from src.logic.dataclass import ApparatData, BookData
|
from src.logic.dataclass import ApparatData, BookData
|
||||||
from src.logic.log import MyLogger
|
from src.logic.log import MyLogger
|
||||||
from src.logic.wordparser import word_docx_to_csv
|
from src.logic.wordparser import elsa_word_to_csv, word_docx_to_csv
|
||||||
from src.ui import (
|
from src.ui import (
|
||||||
App_Ext_Dialog,
|
App_Ext_Dialog,
|
||||||
|
DataGraph,
|
||||||
FilePicker,
|
FilePicker,
|
||||||
GraphWidget,
|
|
||||||
Mail_Dialog,
|
Mail_Dialog,
|
||||||
StatusWidget,
|
StatusWidget,
|
||||||
Ui_Semesterapparat,
|
Ui_Semesterapparat,
|
||||||
@@ -199,7 +199,6 @@ class Ui(Ui_Semesterapparat):
|
|||||||
userrole = self.db.getRole(self.active_user)
|
userrole = self.db.getRole(self.active_user)
|
||||||
# hide admin interface when non-admin is logged in
|
# hide admin interface when non-admin is logged in
|
||||||
if userrole == "admin":
|
if userrole == "admin":
|
||||||
|
|
||||||
self.tabWidget.setTabVisible(3, True)
|
self.tabWidget.setTabVisible(3, True)
|
||||||
else:
|
else:
|
||||||
self.tabWidget.setTabVisible(3, False)
|
self.tabWidget.setTabVisible(3, False)
|
||||||
@@ -255,11 +254,7 @@ class Ui(Ui_Semesterapparat):
|
|||||||
self.validate_thread.start()
|
self.validate_thread.start()
|
||||||
|
|
||||||
# get all current apparats and cache them in a list
|
# get all current apparats and cache them in a list
|
||||||
self.apparats = self.db.getAllAparats(deleted=0)
|
self.apparats = self.get_apparats()
|
||||||
self.apparats = natsorted(self.apparats, key=lambda x: x[4], reverse=True)
|
|
||||||
|
|
||||||
for apparat in self.apparats:
|
|
||||||
self.insert_apparat_into_table(apparat)
|
|
||||||
|
|
||||||
self.old_apparats = self.apparats # create a clone to compare against later
|
self.old_apparats = self.apparats # create a clone to compare against later
|
||||||
# if length of apparats changes, update box_apparats
|
# if length of apparats changes, update box_apparats
|
||||||
@@ -297,6 +292,17 @@ class Ui(Ui_Semesterapparat):
|
|||||||
# statistic side buttons
|
# statistic side buttons
|
||||||
self.btn_notify_for_deletion.clicked.connect(self.notify_for_deletion)
|
self.btn_notify_for_deletion.clicked.connect(self.notify_for_deletion)
|
||||||
self.btn_notify_for_deletion.setEnabled(False)
|
self.btn_notify_for_deletion.setEnabled(False)
|
||||||
|
# elsa buttons
|
||||||
|
self.elsa_add_new.clicked.connect(self.add_new_elsa)
|
||||||
|
self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation)
|
||||||
|
self.elsa_save.clicked.connect(self.save_elsa)
|
||||||
|
self.elsa_date_today.clicked.connect(self.generateTodayDateElsa)
|
||||||
|
self.active_semester.clicked.connect(self.addSemester)
|
||||||
|
self.elsa_table.doubleClicked.connect(self.open_elsa)
|
||||||
|
self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa)
|
||||||
|
self.check_file_elsa.clicked.connect(self.parseDokumentElsa)
|
||||||
|
self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa)
|
||||||
|
|
||||||
# admin buttons
|
# admin buttons
|
||||||
self.user_frame_addUser.clicked.connect(self.add_user)
|
self.user_frame_addUser.clicked.connect(self.add_user)
|
||||||
self.pushButton.clicked.connect(self.delete_user)
|
self.pushButton.clicked.connect(self.delete_user)
|
||||||
@@ -309,6 +315,206 @@ class Ui(Ui_Semesterapparat):
|
|||||||
self.mail_thread = None
|
self.mail_thread = None
|
||||||
self.autoGrabber = None
|
self.autoGrabber = None
|
||||||
|
|
||||||
|
def add_new_elsa(self):
|
||||||
|
self.create_frame_elsa.setEnabled(True)
|
||||||
|
self.elsa_cancel_create.setEnabled(True)
|
||||||
|
self.active_semester.setEnabled(True)
|
||||||
|
profs = self.db.getProfs()
|
||||||
|
for prof in profs:
|
||||||
|
self.elsa_prof.addItem(f"{prof[3]}, {prof[2]}")
|
||||||
|
self.elsa_prof.setCurrentText("")
|
||||||
|
self.elsa_date.setText("")
|
||||||
|
self.elsa_semester.setText("")
|
||||||
|
|
||||||
|
def cancel_elsa_creation(self):
|
||||||
|
self.create_frame_elsa.setEnabled(False)
|
||||||
|
self.elsa_cancel_create.setEnabled(False)
|
||||||
|
self.elsa_prof.setCurrentText("")
|
||||||
|
self.elsa_date.setText("")
|
||||||
|
self.elsa_semester.setText("")
|
||||||
|
self.dokument_list_elsa.setRowCount(0)
|
||||||
|
self.table_elsa_list.setRowCount(0)
|
||||||
|
|
||||||
|
def generateTodayDateElsa(self):
|
||||||
|
self.elsa_date.setText(QDate.currentDate().toString("dd.MM.yyyy"))
|
||||||
|
|
||||||
|
def addSemester(self):
|
||||||
|
self.elsa_semester.setText(self.generateSemester(today=True))
|
||||||
|
|
||||||
|
def save_elsa(self):
|
||||||
|
if (
|
||||||
|
self.elsa_prof.currentText() == ""
|
||||||
|
or self.elsa_semester.text() == ""
|
||||||
|
or self.elsa_date.text() == ""
|
||||||
|
):
|
||||||
|
# warning message
|
||||||
|
self.confirm_popup("Bitte füllen Sie alle Felder aus")
|
||||||
|
|
||||||
|
return
|
||||||
|
prof = self.elsa_prof.currentText()
|
||||||
|
semester = self.elsa_semester.text()
|
||||||
|
date = self.elsa_date.text()
|
||||||
|
|
||||||
|
self.db.createElsaApparat(date, prof, semester)
|
||||||
|
self.cancel_elsa_creation()
|
||||||
|
|
||||||
|
def insert_elsa_into_table(self, apparat):
|
||||||
|
self.elsa_table.insertRow(0)
|
||||||
|
date = apparat[1]
|
||||||
|
semester = apparat[2]
|
||||||
|
prof = apparat[3]
|
||||||
|
self.elsa_table.setItem(0, 0, QtWidgets.QTableWidgetItem(prof))
|
||||||
|
self.elsa_table.setItem(0, 1, QtWidgets.QTableWidgetItem(date))
|
||||||
|
self.elsa_table.setItem(0, 2, QtWidgets.QTableWidgetItem(semester))
|
||||||
|
return (semester, 1)
|
||||||
|
|
||||||
|
def open_elsa(self):
|
||||||
|
prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text()
|
||||||
|
date = self.elsa_table.item(self.elsa_table.currentRow(), 1).text()
|
||||||
|
semester = self.elsa_table.item(self.elsa_table.currentRow(), 2).text()
|
||||||
|
if self.elsa_prof.currentText() == prof:
|
||||||
|
self.logger.log_info("Same prof, stopping")
|
||||||
|
return
|
||||||
|
|
||||||
|
self.dokument_list_elsa.setRowCount(0)
|
||||||
|
self.table_elsa_list.setRowCount(0)
|
||||||
|
self.elsa_cancel_create.setEnabled(True)
|
||||||
|
# get elsa apparats, iterate over them and find the one where all matches
|
||||||
|
elsa_apparats = self.db.getElsaApparats()
|
||||||
|
elsa_id = None
|
||||||
|
for apparat in elsa_apparats:
|
||||||
|
if apparat[1] == date and apparat[2] == semester and apparat[3] == prof:
|
||||||
|
elsa_id = apparat[0]
|
||||||
|
print(elsa_id)
|
||||||
|
break
|
||||||
|
if elsa_id is None:
|
||||||
|
return
|
||||||
|
self.elsa_date.setText(date)
|
||||||
|
self.elsa_semester.setText(semester)
|
||||||
|
self.elsa_prof.setCurrentText(prof)
|
||||||
|
documents = self.db.getElsaFiles(elsa_id)
|
||||||
|
for document in documents:
|
||||||
|
print(document)
|
||||||
|
self.dokument_list_elsa.insertRow(0)
|
||||||
|
self.dokument_list_elsa.setItem(
|
||||||
|
0, 0, QtWidgets.QTableWidgetItem(document[0])
|
||||||
|
)
|
||||||
|
self.dokument_list_elsa.setItem(
|
||||||
|
0, 1, QtWidgets.QTableWidgetItem(document[1])
|
||||||
|
)
|
||||||
|
self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("❌"))
|
||||||
|
self.dokument_list_elsa.setItem(
|
||||||
|
0, 3, QtWidgets.QTableWidgetItem("Database")
|
||||||
|
)
|
||||||
|
scans = self.db.getElsaMedia(elsa_id)
|
||||||
|
if scans == []:
|
||||||
|
self.MainWindow.setStatusTip("ELSA-Apparat hat noch keine Daten")
|
||||||
|
self.create_frame_elsa.setEnabled(True)
|
||||||
|
else:
|
||||||
|
self.MainWindow.setStatusTip(
|
||||||
|
"ELSA-Apparat hat bereits alle benötigten Daten"
|
||||||
|
)
|
||||||
|
for scan in scans:
|
||||||
|
self.table_elsa_list.insertRow(0)
|
||||||
|
self.table_elsa_list.setItem(0, 0, QtWidgets.QTableWidgetItem(scan[1]))
|
||||||
|
self.table_elsa_list.setItem(0, 1, QtWidgets.QTableWidgetItem(scan[2]))
|
||||||
|
self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(scan[3]))
|
||||||
|
self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(scan[4]))
|
||||||
|
|
||||||
|
def addDokumentElsa(self):
|
||||||
|
print("Add document")
|
||||||
|
picker = FilePicker()
|
||||||
|
files = picker.pick_files()
|
||||||
|
datalist = []
|
||||||
|
for file in files:
|
||||||
|
data = {}
|
||||||
|
print(file)
|
||||||
|
filename = file.split("/")[-1]
|
||||||
|
filetype = filename.split(".")[-1]
|
||||||
|
self.dokument_list_elsa.insertRow(0)
|
||||||
|
self.dokument_list_elsa.setItem(0, 0, QtWidgets.QTableWidgetItem(filename))
|
||||||
|
self.dokument_list_elsa.setItem(0, 1, QtWidgets.QTableWidgetItem(filetype))
|
||||||
|
self.dokument_list_elsa.setItem(0, 2, QtWidgets.QTableWidgetItem("*"))
|
||||||
|
self.dokument_list_elsa.setItem(0, 3, QtWidgets.QTableWidgetItem(file))
|
||||||
|
# set tooltip of row 3 to the file path for each row
|
||||||
|
self.dokument_list_elsa.item(0, 3).setToolTip(file)
|
||||||
|
data["name"] = filename
|
||||||
|
data["path"] = file
|
||||||
|
data["type"] = filetype
|
||||||
|
datalist.append(data)
|
||||||
|
elsa_id = self.db.getElsaId(
|
||||||
|
self.elsa_prof.currentText(),
|
||||||
|
self.elsa_semester.text(),
|
||||||
|
self.elsa_date.text(),
|
||||||
|
)
|
||||||
|
print(elsa_id)
|
||||||
|
if elsa_id is None:
|
||||||
|
# get length of elsa table
|
||||||
|
rows = self.elsa_table.rowCount()
|
||||||
|
elsa_id = rows + 1
|
||||||
|
self.db.insertElsaFile(datalist, elsa_id)
|
||||||
|
self.elsa_save.click()
|
||||||
|
|
||||||
|
def parseDokumentElsa(self):
|
||||||
|
if self.dokument_list_elsa.rowCount() == 0:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
# get the file path of the selected file based on it's row
|
||||||
|
row = self.dokument_list_elsa.currentRow()
|
||||||
|
file = self.dokument_list_elsa.item(row, 3).text()
|
||||||
|
print(file)
|
||||||
|
if file == "Database":
|
||||||
|
filename = self.dokument_list_elsa.item(row, 0).text()
|
||||||
|
filetype = self.dokument_list_elsa.item(row, 1).text()
|
||||||
|
|
||||||
|
file = recreateElsaFile(
|
||||||
|
filename=filename, filetype=filetype, open=False
|
||||||
|
)
|
||||||
|
print(file)
|
||||||
|
data = elsa_word_to_csv(file)
|
||||||
|
for row in data:
|
||||||
|
self.table_elsa_list.insertRow(0)
|
||||||
|
ic(row)
|
||||||
|
chapter_title = row[2]
|
||||||
|
book_title = row[4]
|
||||||
|
signature = row[7]
|
||||||
|
pages = row[6]
|
||||||
|
data = {
|
||||||
|
"chapter": chapter_title,
|
||||||
|
"title": book_title,
|
||||||
|
"signature": signature,
|
||||||
|
"pages": pages,
|
||||||
|
}
|
||||||
|
self.table_elsa_list.setItem(
|
||||||
|
0, 0, QtWidgets.QTableWidgetItem(chapter_title)
|
||||||
|
)
|
||||||
|
self.table_elsa_list.setItem(
|
||||||
|
0, 1, QtWidgets.QTableWidgetItem(book_title)
|
||||||
|
)
|
||||||
|
self.table_elsa_list.setItem(
|
||||||
|
0, 2, QtWidgets.QTableWidgetItem(signature)
|
||||||
|
)
|
||||||
|
self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(pages))
|
||||||
|
self.db.addElsaMedia(
|
||||||
|
data,
|
||||||
|
self.db.getElsaId(
|
||||||
|
self.elsa_prof.currentText(),
|
||||||
|
self.elsa_semester.text(),
|
||||||
|
self.elsa_date.text(),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
def openDocumentElsa(self):
|
||||||
|
# open the selected document
|
||||||
|
row = self.dokument_list_elsa.currentRow()
|
||||||
|
location = self.dokument_list_elsa.item(row, 3).text()
|
||||||
|
filetype = self.dokument_list_elsa.item(row, 1).text()
|
||||||
|
filename = self.dokument_list_elsa.item(row, 0).text()
|
||||||
|
if location == "Database":
|
||||||
|
recreateElsaFile(filename, filetype, open=True)
|
||||||
|
else:
|
||||||
|
os.system(f"{filename}")
|
||||||
|
|
||||||
def notify_for_deletion(self):
|
def notify_for_deletion(self):
|
||||||
# get all selected apparats
|
# get all selected apparats
|
||||||
selected_apparats: list[dict] = []
|
selected_apparats: list[dict] = []
|
||||||
@@ -343,6 +549,12 @@ class Ui(Ui_Semesterapparat):
|
|||||||
|
|
||||||
self.btn_notify_for_deletion.setEnabled(False)
|
self.btn_notify_for_deletion.setEnabled(False)
|
||||||
|
|
||||||
|
def get_apparats(self):
|
||||||
|
alist = self.db.getAllAparats(deleted=0)
|
||||||
|
alist = natsorted(alist, key=lambda x: x[4], reverse=True)
|
||||||
|
for apparat in alist:
|
||||||
|
self.insert_apparat_into_table(apparat)
|
||||||
|
|
||||||
def populate_appfach_dropdown(self):
|
def populate_appfach_dropdown(self):
|
||||||
self.app_fach.clear()
|
self.app_fach.clear()
|
||||||
self.app_fach.addItem("")
|
self.app_fach.addItem("")
|
||||||
@@ -356,10 +568,43 @@ class Ui(Ui_Semesterapparat):
|
|||||||
# documentation.show()
|
# documentation.show()
|
||||||
|
|
||||||
def tabW1_changed(self):
|
def tabW1_changed(self):
|
||||||
if self.tabWidget.currentIndex() == 1:
|
if self.tabWidget.currentIndex() == 1: # Statistic
|
||||||
# self.tabWidget.setCurrentIndex(1)
|
# self.tabWidget.setCurrentIndex(1)
|
||||||
self.tabWidget_2.setCurrentIndex(1)
|
self.tabWidget_2.setCurrentIndex(1)
|
||||||
self.tabWidget_2.setCurrentIndex(0)
|
self.tabWidget_2.setCurrentIndex(0)
|
||||||
|
if self.tabWidget.currentIndex() == 0: # Apparate
|
||||||
|
# clear all entries from the table
|
||||||
|
self.tableWidget_apparate.setRowCount(0)
|
||||||
|
self.get_apparats()
|
||||||
|
if self.tabWidget.currentIndex() == 2: # Elsa
|
||||||
|
self.elsa_cancel_create.click()
|
||||||
|
try:
|
||||||
|
self.elsa_statistics.removeTab(1)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
self.elsa_table.setRowCount(0)
|
||||||
|
elsa_apparats = self.db.getElsaApparats()
|
||||||
|
elsa_apparats = natsorted(elsa_apparats, key=lambda x: x[2], reverse=True)
|
||||||
|
graph_data = {}
|
||||||
|
|
||||||
|
for apparat in elsa_apparats:
|
||||||
|
print(apparat)
|
||||||
|
data = self.insert_elsa_into_table(apparat)
|
||||||
|
if data[0] in graph_data.keys():
|
||||||
|
graph_data["x"].append(data[0])
|
||||||
|
graph_data["y"].append(data[1])
|
||||||
|
else:
|
||||||
|
graph_data["x"] = [data[0]]
|
||||||
|
graph_data["y"] = [data[1]]
|
||||||
|
generateMissing = True if len(graph_data["x"]) > 1 else False
|
||||||
|
graph = DataGraph(
|
||||||
|
"ELSA Apparate pro Semester",
|
||||||
|
graph_data,
|
||||||
|
generateMissing,
|
||||||
|
"Anzahl der Apparate",
|
||||||
|
)
|
||||||
|
|
||||||
|
self.elsa_statistics.addTab(graph, "Graph")
|
||||||
|
|
||||||
def search_book(self):
|
def search_book(self):
|
||||||
self.book_search_result.setRowCount(0)
|
self.book_search_result.setRowCount(0)
|
||||||
@@ -772,13 +1017,12 @@ class Ui(Ui_Semesterapparat):
|
|||||||
|
|
||||||
graph_data = {
|
graph_data = {
|
||||||
"x": [i[0] for i in data],
|
"x": [i[0] for i in data],
|
||||||
"y": [i[1] for i in data],
|
"y": {"Erstellt": [i[1] for i in data], "Gelöscht": [i[2] for i in data]},
|
||||||
"y2": [i[2] for i in data],
|
|
||||||
}
|
}
|
||||||
graph = GraphWidget(data=graph_data, legend_labels=["Erstellt", "Gelöscht"])
|
graph = DataGraph(title="Erstellte und gelöschte Apparate", data=graph_data)
|
||||||
|
|
||||||
# place the graph into tabWidget_3
|
# place the graph into tabWidget_3
|
||||||
self.tabWidget_3.addTab(graph, "Erstellte und gelöschte Semesterapparate")
|
self.tabWidget_3.addTab(graph, "Graph")
|
||||||
self.tabWidget_3.setCurrentIndex(0)
|
self.tabWidget_3.setCurrentIndex(0)
|
||||||
|
|
||||||
def tab_changed(self):
|
def tab_changed(self):
|
||||||
@@ -787,11 +1031,6 @@ class Ui(Ui_Semesterapparat):
|
|||||||
return
|
return
|
||||||
elif curr_tab == 1: # statistics tab
|
elif curr_tab == 1: # statistics tab
|
||||||
self.populate_tab()
|
self.populate_tab()
|
||||||
elif curr_tab == 2: # admin tab
|
|
||||||
self.populate_admin_tab()
|
|
||||||
|
|
||||||
def populate_admin_tab(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def populate_dropdown(self, box, data):
|
def populate_dropdown(self, box, data):
|
||||||
box.clear()
|
box.clear()
|
||||||
@@ -973,6 +1212,7 @@ class Ui(Ui_Semesterapparat):
|
|||||||
self.cancel_active_selection.click()
|
self.cancel_active_selection.click()
|
||||||
self.check_send_mail.show()
|
self.check_send_mail.show()
|
||||||
self.chkbx_show_del_media.show()
|
self.chkbx_show_del_media.show()
|
||||||
|
self.cancel_active_selection.setEnabled(False)
|
||||||
|
|
||||||
def confirm_popup(self, message: str):
|
def confirm_popup(self, message: str):
|
||||||
dial = QtWidgets.QDialog()
|
dial = QtWidgets.QDialog()
|
||||||
@@ -1132,7 +1372,7 @@ class Ui(Ui_Semesterapparat):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def load_app_data(self, app_id=None):
|
def load_app_data(self, app_id=None):
|
||||||
|
self.cancel_active_selection.setEnabled(True)
|
||||||
if isinstance(app_id, str):
|
if isinstance(app_id, str):
|
||||||
# double click the tableWidget_apparate row with the given app_id
|
# double click the tableWidget_apparate row with the given app_id
|
||||||
row, column = self.get_index_of_value(self.tableWidget_apparate, app_id)
|
row, column = self.get_index_of_value(self.tableWidget_apparate, app_id)
|
||||||
@@ -1188,6 +1428,7 @@ class Ui(Ui_Semesterapparat):
|
|||||||
self.btn_apparat_save.show() if self.btn_apparat_save.isHidden() else None
|
self.btn_apparat_save.show() if self.btn_apparat_save.isHidden() else None
|
||||||
# clear dokumemt_list
|
# clear dokumemt_list
|
||||||
self.dokument_list.setRowCount(0)
|
self.dokument_list.setRowCount(0)
|
||||||
|
self.cancel_active_selection.setEnabled(True)
|
||||||
self.frame.setEnabled(True)
|
self.frame.setEnabled(True)
|
||||||
|
|
||||||
self.sem_year.setEnabled(True)
|
self.sem_year.setEnabled(True)
|
||||||
@@ -1712,6 +1953,7 @@ class Ui(Ui_Semesterapparat):
|
|||||||
self.groupBox_2.hide()
|
self.groupBox_2.hide()
|
||||||
self.groupBox.hide()
|
self.groupBox.hide()
|
||||||
self.check_send_mail.setChecked(False)
|
self.check_send_mail.setChecked(False)
|
||||||
|
self.cancel_active_selection.setEnabled(False)
|
||||||
|
|
||||||
if not self.validate_fields():
|
if not self.validate_fields():
|
||||||
self.confirm_popup("Bitte alle Pflichtfelder ausfüllen!")
|
self.confirm_popup("Bitte alle Pflichtfelder ausfüllen!")
|
||||||
@@ -1793,7 +2035,6 @@ class Ui(Ui_Semesterapparat):
|
|||||||
|
|
||||||
def insert_apparat_into_table(self, apparat):
|
def insert_apparat_into_table(self, apparat):
|
||||||
# ic(apparat)
|
# ic(apparat)
|
||||||
|
|
||||||
def __dauer_check(apparat):
|
def __dauer_check(apparat):
|
||||||
return "Ja" if apparat[7] == 1 else "Nein"
|
return "Ja" if apparat[7] == 1 else "Nein"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user