chore: bugfxes, featurework

This commit is contained in:
2024-12-10 11:22:18 +01:00
parent c1c4257321
commit 7d78c09480

View File

@@ -3,10 +3,11 @@ from natsort import natsorted
from icecream import ic from icecream import ic
from .widget_sources.Ui_elsa_maindialog import Ui_Dialog from .widget_sources.Ui_elsa_maindialog import Ui_Dialog
from PyQt6 import QtCore, QtWidgets, QtGui from PyQt6 import QtCore, QtWidgets, QtGui
from PyQt6.QtGui import QRegularExpressionValidator
from PyQt6.QtCore import QDate from PyQt6.QtCore import QDate
from src import Icon from src import Icon
from src.backend import recreateElsaFile, generateSemesterByDate, Database from src.backend import recreateElsaFile, generateSemesterByDate, Database
from src.logic import elsa_word_to_csv, MyLogger from src.logic import elsa_word_to_csv, MyLogger, Prof
from src.ui import popus_confirm from src.ui import popus_confirm
from src.ui.dialogs import ElsaAddEntry from src.ui.dialogs import ElsaAddEntry
from src.ui.widgets import FilePicker from src.ui.widgets import FilePicker
@@ -36,15 +37,78 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa) self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa)
self.quote_entry.clicked.connect(self.elsa_table_entry) self.quote_entry.clicked.connect(self.elsa_table_entry)
self.quote_entry.setEnabled(False) self.quote_entry.setEnabled(False)
self.newProf.hide()
Icon("person", self.prof_icon)
# validators
# prof mail
self.newProf_mail.setValidator(
QRegularExpressionValidator(
QtCore.QRegularExpression(
r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}"
)
)
)
self.newProf_telnr.setValidator(QtGui.QIntValidator())
self.newProf_telnr.setValidator(
QtGui.QRegularExpressionValidator(QtCore.QRegularExpression(r"^\d{3,14}"))
)
##Variables ##Variables
self.logger = MyLogger("ElsaDialog") self.logger = MyLogger("ElsaDialog")
self.db = Database() self.db = Database()
self.graph_data = {"x": [generateSemesterByDate()], "y": [0]} self.graph_data = {"x": [generateSemesterByDate()], "y": [0]}
self.createProf = False
self.elsa_prof.addItems(self.getProfs())
self.elsa_prof.addItem("")
self.elsa_prof.setCurrentText("")
# implement a check for the prof name. if name is not in list and has schema of lastname, firstname, show newProf frame
self.elsa_prof.currentTextChanged.connect(self.checkProf)
self.newProf_mail.textChanged.connect(self.checkProfData)
self.newProf_telnr.textChanged.connect(self.checkProfData)
self.newProf_title.textChanged.connect(self.checkProfData)
self.loadFrame() self.loadFrame()
# self.show() # self.show()
def checkProfData(self):
if (
(self.newProf_mail.text() != "" and self.newProf_mail.hasAcceptableInput())
and self.newProf_title.text() != ""
and (
self.newProf_telnr.text() != ""
and self.newProf_telnr.hasAcceptableInput()
)
):
self.elsa_save.setEnabled(True)
self.elsa_save.setToolTip("")
else:
self.elsa_save.setEnabled(False)
self.elsa_save.setToolTip("Bitte erst Daten eingeben")
def checkProf(self):
if (
", " in self.elsa_prof.currentText()
and self.elsa_prof.currentText() not in self.getProfs()
):
self.newProf.show()
self.elsa_save.setEnabled(False)
self.elsa_save.setToolTip("Bitte erst Daten eingeben")
self.createProf = True
else:
self.newProf.hide()
self.createProf = False
self.elsa_save.setEnabled(True)
self.elsa_save.setToolTip("")
def getProfs(self):
profs = self.db.getProfs()
profs = [f"{prof.lastname}, {prof.firstname}" for prof in profs]
profs = list(set(profs))
profs.sort()
return profs
def elsa_context_menu(self, position): def elsa_context_menu(self, position):
menu = QtWidgets.QMenu() menu = QtWidgets.QMenu()
# TODO: add functions # TODO: add functions
@@ -62,6 +126,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
elif mediatype == "Monografien": elif mediatype == "Monografien":
data.btn_mono.click() data.btn_mono.click()
data.search()
data.exec() data.exec()
def add_new_elsa(self): def add_new_elsa(self):
@@ -69,7 +134,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.elsa_cancel_create.setEnabled(True) self.elsa_cancel_create.setEnabled(True)
self.dokument_list_elsa.setRowCount(0) self.dokument_list_elsa.setRowCount(0)
profs = self.db.getProfs() profs = self.db.getProfs()
profs = [f"{prof.lastname}, {prof.firstnameP}" for prof in profs] profs = [f"{prof.lastname}, {prof.firstname}" for prof in profs]
elsa_profs = self.db.getElsaProfs() elsa_profs = self.db.getElsaProfs()
profs.extend(elsa_profs) profs.extend(elsa_profs)
profs = list(set(profs)) profs = list(set(profs))
@@ -81,9 +146,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.elsa_semester.setText("") self.elsa_semester.setText("")
self.elsa_save.setEnabled(True) self.elsa_save.setEnabled(True)
self.elsa_update.setEnabled(False) self.elsa_update.setEnabled(False)
semester = generateSemesterByDate() self.elsa_prof.setFocus()
if semester in self.graph_data["x"]:
position = self.graph_data["x"]
def cancel_elsa_creation(self): def cancel_elsa_creation(self):
self.create_frame_elsa.setEnabled(False) self.create_frame_elsa.setEnabled(False)
@@ -131,18 +194,48 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.confirm_popup("Bitte füllen Sie alle Felder aus", title="Fehler") self.confirm_popup("Bitte füllen Sie alle Felder aus", title="Fehler")
return return
prof = self.elsa_prof.currentText() prof = self.elsa_prof.currentText()
semester = self.elsa_semester.text() semester = self.elsa_semester.text()
date = self.elsa_date.text() date = self.elsa_date.text()
prof_id = self.db.getElsaProfId(prof) profdata = Prof(
firstname=prof.split(", ")[1],
lastname=prof.split(", ")[0],
mail=self.newProf_mail.text(),
telnr=self.newProf_telnr.text(),
title=self.newProf_title.text(),
fullname=f"{prof.split(", ")[0]} {prof.split(", ")[1]}",
)
prof_id = self.db.getProfId(profdata)
ic(profdata, prof_id)
if prof_id is None: if prof_id is None:
self.db.createElsaProf(prof) self.db.createProf(profdata)
prof_id = self.db.getElsaProfId(prof) prof_id = self.db.getProfId(prof)
self.db.createElsaApparat(date, prof_id, semester) elsa_id = self.db.createElsaApparat(
date,
prof_id,
semester,
)
if self.dokument_list_elsa.rowCount() > 0:
files = []
for i in range(self.dokument_list_elsa.rowCount()):
filename = self.dokument_list_elsa.item(i, 0).text()
filetype = self.dokument_list_elsa.item(i, 1).text()
file_path = self.dokument_list_elsa.item(i, 3).text()
file = {"name": filename, "path": file_path, "type": filetype}
files.append(file)
self.db.insertElsaFile(
files,
elsa_id,
)
self.cancel_elsa_creation() self.cancel_elsa_creation()
self.refresh_elsa_table() self.refresh_elsa_table()
self.elsa_prof.clear() self.elsa_prof.clear()
self.elsa_prof.addItem(prof) self.elsa_prof.addItems(self.getProfs())
self.elsa_prof.addItem("")
self.elsa_prof.setCurrentText("")
self.quote_entry.setEnabled(False) self.quote_entry.setEnabled(False)
def refresh_elsa_table(self): def refresh_elsa_table(self):
@@ -155,7 +248,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.elsa_table.insertRow(0) self.elsa_table.insertRow(0)
date = apparat[1] date = apparat[1]
semester = apparat[2] semester = apparat[2]
prof = self.db.getElsaProf(apparat[3]) prof = self.db.getProfNameById(apparat[3])
self.elsa_table.setItem(0, 0, QtWidgets.QTableWidgetItem(prof)) self.elsa_table.setItem(0, 0, QtWidgets.QTableWidgetItem(prof))
self.elsa_table.setItem(0, 1, QtWidgets.QTableWidgetItem(date)) self.elsa_table.setItem(0, 1, QtWidgets.QTableWidgetItem(date))
self.elsa_table.setItem(0, 2, QtWidgets.QTableWidgetItem(semester)) self.elsa_table.setItem(0, 2, QtWidgets.QTableWidgetItem(semester))
@@ -186,7 +279,9 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.elsa_date.setText(date) self.elsa_date.setText(date)
self.elsa_semester.setText(semester) self.elsa_semester.setText(semester)
self.elsa_prof.setCurrentText(prof) self.elsa_prof.setCurrentText(prof)
ic(elsa_id)
if elsa_id is None: if elsa_id is None:
log.
return return
documents = self.db.getElsaFiles(elsa_id) documents = self.db.getElsaFiles(elsa_id)
for document in documents: for document in documents:
@@ -206,12 +301,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
if scans == []: if scans == []:
self.create_frame_elsa.setEnabled(True) self.create_frame_elsa.setEnabled(True)
# print(scans)
# remove all rows from the table
for scan in scans: for scan in scans:
# print("Inserting row")
# print(scan["type"])
self.setElsaRow(scan) self.setElsaRow(scan)
self.quote_entry.setEnabled(True) self.quote_entry.setEnabled(True)
@@ -234,7 +324,11 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.table_elsa_list.setItem( self.table_elsa_list.setItem(
0, 6, QtWidgets.QTableWidgetItem(scan["chapter_title"]) 0, 6, QtWidgets.QTableWidgetItem(scan["chapter_title"])
) )
self.table_elsa_list.setItem(0, 7, QtWidgets.QTableWidgetItem(scan["pages"])) self.table_elsa_list.setItem(
0,
7,
QtWidgets.QTableWidgetItem(scan["pages"]),
)
self.table_elsa_list.setItem(0, 8, QtWidgets.QTableWidgetItem(scan["location"])) self.table_elsa_list.setItem(0, 8, QtWidgets.QTableWidgetItem(scan["location"]))
self.table_elsa_list.setItem( self.table_elsa_list.setItem(
0, 9, QtWidgets.QTableWidgetItem(scan["publisher"]) 0, 9, QtWidgets.QTableWidgetItem(scan["publisher"])
@@ -265,27 +359,27 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
data["path"] = file data["path"] = file
data["type"] = filetype data["type"] = filetype
datalist.append(data) datalist.append(data)
elsa_id = self.db.getElsaId( # elsa_id = self.db.getElsaId(
self.elsa_prof.currentText(), # self.elsa_prof.currentText(),
self.elsa_semester.text(), # self.elsa_semester.text(),
self.elsa_date.text(), # self.elsa_date.text(),
) # )
# print(elsa_id) # # print(elsa_id)
if elsa_id is None: # if elsa_id is None:
# create elsa # # create elsa
self.db.createElsaApparat( # self.db.createElsaApparat(
self.elsa_date.text(), # self.elsa_date.text(),
self.elsa_prof.currentText(), # self.elsa_prof.currentText(),
self.elsa_semester.text(), # self.elsa_semester.text(),
) # )
elsa_id = self.db.getElsaId( # elsa_id = self.db.getElsaId(
self.elsa_prof.currentText(), # self.elsa_prof.currentText(),
self.elsa_semester.text(), # self.elsa_semester.text(),
self.elsa_date.text(), # self.elsa_date.text(),
) # )
self.db.insertElsaFile(datalist, elsa_id) # self.db.insertElsaFile(datalist, elsa_id)
self.elsa_save.setEnabled(False) # self.elsa_save.setEnabled(False)
self.refresh_elsa_table() # self.refresh_elsa_table()
def parseDokumentElsa(self): def parseDokumentElsa(self):
if self.dokument_list_elsa.rowCount() == 0: if self.dokument_list_elsa.rowCount() == 0:
@@ -310,7 +404,15 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.elsa_date.text(), self.elsa_date.text(),
) )
for row in data: for row in data:
self.setElsaRow(row) if ";" in row["pages"]:
count = row["pages"].split(";")
for i in range(len(count)):
row["pages"] = count[i]
self.setElsaRow(
row,
)
else:
self.setElsaRow(row)
self.db.addElsaMedia(row, elsa_id) self.db.addElsaMedia(row, elsa_id)
self.quote_entry.setEnabled(True) self.quote_entry.setEnabled(True)