chore: bugfxes, featurework
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user