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 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QDate, QThread from PyQt6.QtCore import QDate, QThread
from PyQt6.QtGui import QRegularExpressionValidator from PyQt6.QtGui import QRegularExpressionValidator
from src.transformers.transformers import DictToTable
from src import Icon from src import Icon
from src.backend import ( from src.backend import (
@@ -34,6 +35,7 @@ from src.logic import (
csv_to_list, csv_to_list,
elsa_word_to_csv, elsa_word_to_csv,
word_docx_to_csv, word_docx_to_csv,
ZoteroController,
) )
from src.ui import ( from src.ui import (
About, About,
@@ -53,7 +55,7 @@ from src.ui import (
reminder_ui, reminder_ui,
SearchStatisticPage, SearchStatisticPage,
) )
from src.ui.extensions import ValidatorButton from src.ui.dialogs.elsa_add_entry import ElsaAddEntry
config = OmegaConf.load("config.yaml") config = OmegaConf.load("config.yaml")
@@ -256,21 +258,24 @@ class Ui(Ui_Semesterapparat):
self.table_elsa_list.customContextMenuRequested.connect(self.elsa_context_menu) self.table_elsa_list.customContextMenuRequested.connect(self.elsa_context_menu)
# elsa buttons # 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_add_new.clicked.connect(self.add_new_elsa)
self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation) self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation)
self.elsa_save.clicked.connect(self.save_elsa) self.elsa_save.clicked.connect(self.save_elsa)
self.elsa_date_today.clicked.connect(self.generateTodayDateElsa) self.elsa_date_today.clicked.connect(self.generateTodayDateElsa)
self.active_semester.clicked.connect(self.addSemester) self.active_semester.clicked.connect(self.addSemester)
Icon("semester", self.active_semester) self.elsa_update.clicked.connect(self.update_elsa)
Icon("today", self.elsa_date_today)
self.elsa_table.doubleClicked.connect(self.open_elsa) self.elsa_table.doubleClicked.connect(self.open_elsa)
self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa) self.btn_add_document_elsa.clicked.connect(self.addDokumentElsa)
self.check_file_elsa.clicked.connect(self.parseDokumentElsa) self.check_file_elsa.clicked.connect(self.parseDokumentElsa)
self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa) self.btn_open_document_elsa.clicked.connect(self.openDocumentElsa)
self.add_entry.clicked.connect(self.elsa_table_entry)
# 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.btn_delete_user.clicked.connect(self.delete_user)
self.update_user.clicked.connect(self.update_user_data) self.update_user.clicked.connect(self.update_user_data)
self.update_faculty_member.clicked.connect(self.edit_faculty_member_action) self.update_faculty_member.clicked.connect(self.edit_faculty_member_action)
@@ -297,10 +302,62 @@ class Ui(Ui_Semesterapparat):
tempdelete() tempdelete()
sys.exit() 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): def add_new_elsa(self):
self.create_frame_elsa.setEnabled(True) self.create_frame_elsa.setEnabled(True)
self.elsa_cancel_create.setEnabled(True) self.elsa_cancel_create.setEnabled(True)
self.active_semester.setEnabled(True)
self.dokument_list_elsa.setRowCount(0) self.dokument_list_elsa.setRowCount(0)
profs = self.db.getProfs() profs = self.db.getProfs()
for prof in profs: for prof in profs:
@@ -324,6 +381,16 @@ class Ui(Ui_Semesterapparat):
def addSemester(self): def addSemester(self):
self.elsa_semester.setText(self.generateSemester(today=True)) 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): def save_elsa(self):
if ( if (
self.elsa_prof.currentText() == "" self.elsa_prof.currentText() == ""
@@ -362,6 +429,7 @@ class Ui(Ui_Semesterapparat):
prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text() prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text()
date = self.elsa_table.item(self.elsa_table.currentRow(), 1).text() date = self.elsa_table.item(self.elsa_table.currentRow(), 1).text()
semester = self.elsa_table.item(self.elsa_table.currentRow(), 2).text() semester = self.elsa_table.item(self.elsa_table.currentRow(), 2).text()
self.elsa_update.setEnabled(True)
if self.elsa_prof.currentText() == prof: if self.elsa_prof.currentText() == prof:
self.logger.log_info("Same prof, stopping") self.logger.log_info("Same prof, stopping")
return return
@@ -401,11 +469,26 @@ class Ui(Ui_Semesterapparat):
self.create_frame_elsa.setEnabled(True) self.create_frame_elsa.setEnabled(True)
else: else:
for scan in scans: 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.insertRow(0)
self.table_elsa_list.setItem(0, 0, QtWidgets.QTableWidgetItem(scan[1])) self.table_elsa_list.setItem(0, 0, QtWidgets.QTableWidgetItem(chapter))
self.table_elsa_list.setItem(0, 1, QtWidgets.QTableWidgetItem(scan[2])) self.table_elsa_list.setItem(
self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(scan[3])) 0, 1, QtWidgets.QTableWidgetItem(text_author)
self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(scan[4])) )
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) self.create_frame_elsa.setEnabled(True)
def addDokumentElsa(self): def addDokumentElsa(self):
print("Add document") print("Add document")
@@ -439,7 +522,7 @@ class Ui(Ui_Semesterapparat):
rows = self.elsa_table.rowCount() rows = self.elsa_table.rowCount()
elsa_id = rows + 1 elsa_id = rows + 1
self.db.insertElsaFile(datalist, elsa_id) self.db.insertElsaFile(datalist, elsa_id)
self.elsa_save.click() # self.elsa_save.click()
def parseDokumentElsa(self): def parseDokumentElsa(self):
if self.dokument_list_elsa.rowCount() == 0: if self.dokument_list_elsa.rowCount() == 0:
@@ -457,7 +540,7 @@ class Ui(Ui_Semesterapparat):
filename=filename, filetype=filetype, open=False filename=filename, filetype=filetype, open=False
) )
print(file) print(file)
data = elsa_word_to_csv(file) data, doctype = elsa_word_to_csv(file)
for row in data: for row in data:
self.table_elsa_list.insertRow(0) self.table_elsa_list.insertRow(0)
ic(row) ic(row)
@@ -474,6 +557,7 @@ class Ui(Ui_Semesterapparat):
"title": book_title, "title": book_title,
"signature": signature, "signature": signature,
"pages": pages, "pages": pages,
"type": doctype,
} }
self.table_elsa_list.setItem( self.table_elsa_list.setItem(
0, 0, QtWidgets.QTableWidgetItem(chapter_title) 0, 0, QtWidgets.QTableWidgetItem(chapter_title)
@@ -489,6 +573,7 @@ class Ui(Ui_Semesterapparat):
self.table_elsa_list.setItem( self.table_elsa_list.setItem(
0, 5, QtWidgets.QTableWidgetItem(book_author) 0, 5, QtWidgets.QTableWidgetItem(book_author)
) )
self.table_elsa_list.setItem(0, 6, QtWidgets.QTableWidgetItem(doctype))
self.db.addElsaMedia( self.db.addElsaMedia(
data, data,
self.db.getElsaId( self.db.getElsaId(