diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py index e2313d5..a6bf221 100644 --- a/src/ui/userInterface.py +++ b/src/ui/userInterface.py @@ -13,6 +13,7 @@ from omegaconf import OmegaConf from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6.QtCore import QDate, QThread from PyQt6.QtGui import QRegularExpressionValidator +from src.transformers.transformers import DictToTable from src import Icon from src.backend import ( @@ -34,6 +35,7 @@ from src.logic import ( csv_to_list, elsa_word_to_csv, word_docx_to_csv, + ZoteroController, ) from src.ui import ( About, @@ -53,7 +55,7 @@ from src.ui import ( reminder_ui, SearchStatisticPage, ) -from src.ui.extensions import ValidatorButton +from src.ui.dialogs.elsa_add_entry import ElsaAddEntry config = OmegaConf.load("config.yaml") @@ -256,21 +258,24 @@ class Ui(Ui_Semesterapparat): self.table_elsa_list.customContextMenuRequested.connect(self.elsa_context_menu) # elsa buttons + Icon("semester", self.active_semester) + Icon("today", self.elsa_date_today) + self.create_frame_elsa.setEnabled(False) 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) - Icon("semester", self.active_semester) - Icon("today", self.elsa_date_today) + self.elsa_update.clicked.connect(self.update_elsa) 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) + self.add_entry.clicked.connect(self.elsa_table_entry) # admin buttons self.user_frame_addUser.clicked.connect(self.add_user) - self.pushButton.clicked.connect(self.delete_user) + self.btn_delete_user.clicked.connect(self.delete_user) self.update_user.clicked.connect(self.update_user_data) self.update_faculty_member.clicked.connect(self.edit_faculty_member_action) @@ -297,10 +302,62 @@ class Ui(Ui_Semesterapparat): tempdelete() sys.exit() + def elsa_table_entry(self): + dtt = DictToTable() + zot = ZoteroController() + data = ElsaAddEntry() + data.exec() + data = data.data + table = dtt.transform(data) + + if data is None: + return + res_key = None + if table["type"] == "zs": + res_key = zot.createJournalArticle( + zot.createBook(table["signature"]), table + ) + elif table["type"] == "book": + res_key = zot.createBookSection(zot.createBook(table["signature"]), table) + elif table["type"] == "hg": + res_key = zot.createHGSection(zot.createBook(table["signature"]), table) + + if res_key: + citation = zot.get_citation(res_key) + zot.deleteItem(res_key) + print(citation) + print(table) + self.table_elsa_list.insertRow(0) + self.table_elsa_list.setItem( + 0, 0, QtWidgets.QTableWidgetItem(table["work_author"]) + ) + self.table_elsa_list.setItem( + 0, 1, QtWidgets.QTableWidgetItem(table["chapter_title"]) + ) + self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(table["year"])) + self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(table["issue"])) + self.table_elsa_list.setItem(0, 4, QtWidgets.QTableWidgetItem(table["edition"])) + self.table_elsa_list.setItem( + 0, 5, QtWidgets.QTableWidgetItem(table["work_title"]) + ) + self.table_elsa_list.setItem( + 0, 6, QtWidgets.QTableWidgetItem(table["chapter_title"]) + ) + self.table_elsa_list.setItem(0, 7, QtWidgets.QTableWidgetItem(table["pages"])) + self.table_elsa_list.setItem( + 0, 8, QtWidgets.QTableWidgetItem(table["location"]) + ) + self.table_elsa_list.setItem( + 0, 9, QtWidgets.QTableWidgetItem(table["publisher"]) + ) + self.table_elsa_list.setItem( + 0, 10, QtWidgets.QTableWidgetItem(table["signature"]) + ) + self.table_elsa_list.setItem(0, 11, QtWidgets.QTableWidgetItem(table["type"])) + def add_new_elsa(self): self.create_frame_elsa.setEnabled(True) self.elsa_cancel_create.setEnabled(True) - self.active_semester.setEnabled(True) self.dokument_list_elsa.setRowCount(0) profs = self.db.getProfs() for prof in profs: @@ -324,6 +381,16 @@ class Ui(Ui_Semesterapparat): def addSemester(self): self.elsa_semester.setText(self.generateSemester(today=True)) + def update_elsa(self): + prof = self.elsa_prof.currentText() + date = self.elsa_date.text() + semester = self.elsa_semester.text() + elsa_id = self.db.getElsaId(prof, semester, date) + if elsa_id is None: + return + self.db.updateElsaApparat(elsa_id, prof, semester, date) + self.elsa_update.setEnabled(False) + def save_elsa(self): if ( self.elsa_prof.currentText() == "" @@ -362,6 +429,7 @@ class Ui(Ui_Semesterapparat): 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() + self.elsa_update.setEnabled(True) if self.elsa_prof.currentText() == prof: self.logger.log_info("Same prof, stopping") return @@ -401,11 +469,26 @@ class Ui(Ui_Semesterapparat): self.create_frame_elsa.setEnabled(True) else: for scan in scans: + chapter = scan[1] + title = scan[2] + signature = scan[3] + pages = scan[4] + text_author = scan[5] + book_author = scan[6] + art_type = scan[7] 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])) + self.table_elsa_list.setItem(0, 0, QtWidgets.QTableWidgetItem(chapter)) + self.table_elsa_list.setItem( + 0, 1, QtWidgets.QTableWidgetItem(text_author) + ) + self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(title)) + self.table_elsa_list.setItem( + 0, 3, QtWidgets.QTableWidgetItem(signature) + ) + self.table_elsa_list.setItem(0, 4, QtWidgets.QTableWidgetItem(pages)) + self.table_elsa_list.setItem( + 0, 5, QtWidgets.QTableWidgetItem(book_author) + ) self.create_frame_elsa.setEnabled(True) def addDokumentElsa(self): print("Add document") @@ -439,7 +522,7 @@ class Ui(Ui_Semesterapparat): rows = self.elsa_table.rowCount() elsa_id = rows + 1 self.db.insertElsaFile(datalist, elsa_id) - self.elsa_save.click() + # self.elsa_save.click() def parseDokumentElsa(self): if self.dokument_list_elsa.rowCount() == 0: @@ -457,7 +540,7 @@ class Ui(Ui_Semesterapparat): filename=filename, filetype=filetype, open=False ) print(file) - data = elsa_word_to_csv(file) + data, doctype = elsa_word_to_csv(file) for row in data: self.table_elsa_list.insertRow(0) ic(row) @@ -474,6 +557,7 @@ class Ui(Ui_Semesterapparat): "title": book_title, "signature": signature, "pages": pages, + "type": doctype, } self.table_elsa_list.setItem( 0, 0, QtWidgets.QTableWidgetItem(chapter_title) @@ -489,6 +573,7 @@ class Ui(Ui_Semesterapparat): self.table_elsa_list.setItem( 0, 5, QtWidgets.QTableWidgetItem(book_author) ) + self.table_elsa_list.setItem(0, 6, QtWidgets.QTableWidgetItem(doctype)) self.db.addElsaMedia( data, self.db.getElsaId(