add elsa bibliography

This commit is contained in:
WorldTeacher
2024-06-26 16:37:10 +02:00
parent 22b5dfacc5
commit 47fa20c4ef

View File

@@ -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(