diff --git a/icons/dark/calendar_today.svg b/icons/calendar_today.svg similarity index 100% rename from icons/dark/calendar_today.svg rename to icons/calendar_today.svg diff --git a/icons/dark/check_fail.svg b/icons/check_fail.svg similarity index 100% rename from icons/dark/check_fail.svg rename to icons/check_fail.svg diff --git a/icons/dark/check_success.svg b/icons/check_success.svg similarity index 100% rename from icons/dark/check_success.svg rename to icons/check_success.svg diff --git a/icons/dark/close.svg b/icons/close.svg similarity index 100% rename from icons/dark/close.svg rename to icons/close.svg diff --git a/icons/dark/edit.svg b/icons/edit.svg similarity index 100% rename from icons/dark/edit.svg rename to icons/edit.svg diff --git a/icons/dark/edit_note.svg b/icons/edit_note.svg similarity index 100% rename from icons/dark/edit_note.svg rename to icons/edit_note.svg diff --git a/icons/dark/error.svg b/icons/error.svg similarity index 100% rename from icons/dark/error.svg rename to icons/error.svg diff --git a/icons/dark/help.svg b/icons/help.svg similarity index 100% rename from icons/dark/help.svg rename to icons/help.svg diff --git a/icons/icons.yaml b/icons/icons.yaml index b39bf30..cdb3a5e 100644 --- a/icons/icons.yaml +++ b/icons/icons.yaml @@ -1,24 +1,27 @@ icon_path: icons/ -locked: locked.svg -logo: logo.ico -show_password: visibility_off.svg -hide_password: visibility_on.svg -settings: settings.svg -today: calendar_today.svg -save: save.svg -edit_note: edit_note.svg -warning: warning.svg -error: error.svg -mail: mail.svg -semester: semester.svg -template_fail: test_fail.svg -offAction: shutdown.svg -info: info.svg -help: help.svg -close: close.svg -notification: notification.svg -valid_true: check_success.svg -valid_false: check_fail.svg -edit: edit.svg -important_warn : red_warn.svg \ No newline at end of file +dark_color: '#75FB4C' +light_color: '#EA3323' +icons: + locked: locked.svg + logo: logo.ico + show_password: visibility_off.svg + hide_password: visibility_on.svg + settings: settings.svg + today: calendar_today.svg + save: save.svg + edit_note: edit_note.svg + warning: warning.svg + error: error.svg + mail: mail.svg + semester: semester.svg + template_fail: test_fail.svg + offAction: shutdown.svg + info: info.svg + help: help.svg + close: close.svg + notification: notification.svg + valid_true: check_success.svg + valid_false: check_fail.svg + edit: edit.svg + important_warn : red_warn.svg \ No newline at end of file diff --git a/icons/dark/info.svg b/icons/info.svg similarity index 100% rename from icons/dark/info.svg rename to icons/info.svg diff --git a/icons/light/calendar_today.svg b/icons/light/calendar_today.svg deleted file mode 100644 index d29e276..0000000 --- a/icons/light/calendar_today.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/check_fail.svg b/icons/light/check_fail.svg deleted file mode 100644 index 3ffdb62..0000000 --- a/icons/light/check_fail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/check_success.svg b/icons/light/check_success.svg deleted file mode 100644 index 65006cd..0000000 --- a/icons/light/check_success.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/close.svg b/icons/light/close.svg deleted file mode 100644 index d40303e..0000000 --- a/icons/light/close.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/edit.svg b/icons/light/edit.svg deleted file mode 100644 index b5a4dea..0000000 --- a/icons/light/edit.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/edit_note.svg b/icons/light/edit_note.svg deleted file mode 100644 index fcfb7ff..0000000 --- a/icons/light/edit_note.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/error.svg b/icons/light/error.svg deleted file mode 100644 index 672c008..0000000 --- a/icons/light/error.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/help.svg b/icons/light/help.svg deleted file mode 100644 index b7fc2fb..0000000 --- a/icons/light/help.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/info.svg b/icons/light/info.svg deleted file mode 100644 index 35404f2..0000000 --- a/icons/light/info.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/locked.svg b/icons/light/locked.svg deleted file mode 100644 index 014079e..0000000 --- a/icons/light/locked.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/logo.ico b/icons/light/logo.ico deleted file mode 100644 index 4dfec92..0000000 Binary files a/icons/light/logo.ico and /dev/null differ diff --git a/icons/light/mail.svg b/icons/light/mail.svg deleted file mode 100644 index 2fc4f1e..0000000 --- a/icons/light/mail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/notification.svg b/icons/light/notification.svg deleted file mode 100644 index 4a3fcea..0000000 --- a/icons/light/notification.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/quote.svg b/icons/light/quote.svg deleted file mode 100644 index 0019abd..0000000 --- a/icons/light/quote.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/red_warn.svg b/icons/light/red_warn.svg deleted file mode 100644 index 0656ecd..0000000 --- a/icons/light/red_warn.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/save.svg b/icons/light/save.svg deleted file mode 100644 index f765241..0000000 --- a/icons/light/save.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/icons/light/semester.svg b/icons/light/semester.svg deleted file mode 100644 index bf3a8ad..0000000 --- a/icons/light/semester.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/settings.svg b/icons/light/settings.svg deleted file mode 100644 index a44d103..0000000 --- a/icons/light/settings.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/shutdown.svg b/icons/light/shutdown.svg deleted file mode 100644 index 8199544..0000000 --- a/icons/light/shutdown.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/test_fail.svg b/icons/light/test_fail.svg deleted file mode 100644 index 52e4bcb..0000000 --- a/icons/light/test_fail.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/visibility_off.svg b/icons/light/visibility_off.svg deleted file mode 100644 index a6d6785..0000000 --- a/icons/light/visibility_off.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/visibility_on.svg b/icons/light/visibility_on.svg deleted file mode 100644 index 248fca5..0000000 --- a/icons/light/visibility_on.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/light/warning.svg b/icons/light/warning.svg deleted file mode 100644 index e69de29..0000000 diff --git a/icons/dark/locked.svg b/icons/locked.svg similarity index 100% rename from icons/dark/locked.svg rename to icons/locked.svg diff --git a/icons/dark/logo.ico b/icons/logo.ico similarity index 100% rename from icons/dark/logo.ico rename to icons/logo.ico diff --git a/icons/dark/mail.svg b/icons/mail.svg similarity index 100% rename from icons/dark/mail.svg rename to icons/mail.svg diff --git a/icons/dark/notification.svg b/icons/notification.svg similarity index 100% rename from icons/dark/notification.svg rename to icons/notification.svg diff --git a/icons/dark/quote.svg b/icons/quote.svg similarity index 100% rename from icons/dark/quote.svg rename to icons/quote.svg diff --git a/icons/dark/red_warn.svg b/icons/red_warn.svg similarity index 100% rename from icons/dark/red_warn.svg rename to icons/red_warn.svg diff --git a/icons/dark/save.svg b/icons/save.svg similarity index 100% rename from icons/dark/save.svg rename to icons/save.svg diff --git a/icons/dark/semester.svg b/icons/semester.svg similarity index 100% rename from icons/dark/semester.svg rename to icons/semester.svg diff --git a/icons/dark/settings.svg b/icons/settings.svg similarity index 100% rename from icons/dark/settings.svg rename to icons/settings.svg diff --git a/icons/dark/shutdown.svg b/icons/shutdown.svg similarity index 100% rename from icons/dark/shutdown.svg rename to icons/shutdown.svg diff --git a/icons/dark/test_fail.svg b/icons/test_fail.svg similarity index 100% rename from icons/dark/test_fail.svg rename to icons/test_fail.svg diff --git a/icons/dark/visibility_off.svg b/icons/visibility_off.svg similarity index 100% rename from icons/dark/visibility_off.svg rename to icons/visibility_off.svg diff --git a/icons/dark/visibility_on.svg b/icons/visibility_on.svg similarity index 100% rename from icons/dark/visibility_on.svg rename to icons/visibility_on.svg diff --git a/icons/dark/warning.svg b/icons/warning.svg similarity index 100% rename from icons/dark/warning.svg rename to icons/warning.svg diff --git a/src/backend/database.py b/src/backend/database.py index 29c0853..65adab8 100644 --- a/src/backend/database.py +++ b/src/backend/database.py @@ -188,7 +188,16 @@ class Database: """ conn = self.connect() cursor = conn.cursor() - log_message = f"{self.get_caller_line()} Querying database with query {query}, args: {args}" + logs_query = query + logs_args = args + if "fileblob" in query: + #set fileblob arg in logger to "too long" + logs_query = query + fileblob_location = query.find("fileblob") + #remove fileblob from query + logs_query = query[:fileblob_location] + "fileblob = too long" + + log_message = f"{self.get_caller_line()} Querying database with query {logs_query}, args: {logs_args}" # if "INSERT" in query: # log_message = f"Querying database with query {query}" diff --git a/src/logic/c_sort.py b/src/logic/c_sort.py index 3a27726..eeb9dae 100644 --- a/src/logic/c_sort.py +++ b/src/logic/c_sort.py @@ -56,4 +56,4 @@ if __name__ == "__main__": ("SoSe 15", 1, 0), ] - print(custom_sort(unsorted)) + # print(custom_sort(unsorted)) diff --git a/src/logic/threads.py b/src/logic/threads.py index 5176d4c..61e9c2f 100644 --- a/src/logic/threads.py +++ b/src/logic/threads.py @@ -109,7 +109,7 @@ class Mailer(Ui_eMailPreview): self.buttonBox.accepted.connect(self.createAndSendMail) def load_mail_templates(self): - print("loading mail templates") + # print("loading mail templates") mail_templates = os.listdir("mail_vorlagen") for template in mail_templates: self.comboBox.addItem(template) @@ -169,12 +169,12 @@ class Mailer(Ui_eMailPreview): # server.starttls() # server.auth(mechanism="PLAIN") if config["mail"]["use_user_name"] == 1: - print(config["mail"]["user_name"]) + # print(config["mail"]["user_name"]) server.login(config["mail"]["user_name"], password) else: server.login(sender_email, password) server.sendmail(sender_email, self.prof_mail, mail) - print("Mail sent") + # print("Mail sent") # end active process server.quit() diff --git a/src/logic/wordparser.py b/src/logic/wordparser.py index 4300a46..01be787 100644 --- a/src/logic/wordparser.py +++ b/src/logic/wordparser.py @@ -46,7 +46,7 @@ def tuple_to_dict(tlist: tuple, type: str) -> dict: ret = [] for line in tlist: data = makeDict() - if type == "Monographie": + if type == "Monografien": data["type"] = type data["work_author"] = line[0] data["year"] = line[1] @@ -84,10 +84,10 @@ def tuple_to_dict(tlist: tuple, type: str) -> dict: def elsa_word_to_csv(path): doc = Document(path) - # print all lines in doc + # # print all lines in doc doctype = [para.text for para in doc.paragraphs if para.text != ""][-1] tuples = { - "Monographie": ("", "", "", "", "", "", "", "", ""), + "Monografien": ("", "", "", "", "", "", "", "", ""), "Herausgeberwerke": ("", "", "", "", "", "", "", "", "", "", ""), "Zeitschriftenaufsätze": ("", "", "", "", "", "", "", "", "", ""), } @@ -113,10 +113,10 @@ def elsa_word_to_csv(path): data = [ row for row in df.itertuples(index=False, name=None) if row != tuples[doctype] ] - print(data) + # print(data) return tuple_to_dict(data, doctype), doctype if __name__ == "__main__": - else_df = elsa_word_to_csv("c:/Users/aky547/Desktop/hrsgw_test.docx") - print(else_df) \ No newline at end of file + else_df = elsa_word_to_csv("C:/Users/aky547/Desktop/Antrag ELSA Schweitzer.docx") + # print(else_df) \ No newline at end of file diff --git a/src/logic/zotero.py b/src/logic/zotero.py index 0835866..3ad9679 100644 --- a/src/logic/zotero.py +++ b/src/logic/zotero.py @@ -178,7 +178,7 @@ class ZoteroController: def __get_data(self, isbn): web = WebRequest() web.get_ppn(isbn) - data = web.get_data() + data = web.get_data_elsa() bib = BibTextTransformer("ARRAY") bib.get_data(data) book = bib.return_data() diff --git a/src/ui/__init__.py b/src/ui/__init__.py index 518c912..b3aa330 100644 --- a/src/ui/__init__.py +++ b/src/ui/__init__.py @@ -1,5 +1,7 @@ import pathlib +from .Ui_semesterapparat_ui import Ui_MainWindow as Ui_Semesterapparat + from .dialogs import ( ApparatExtendDialog, Mail_Dialog, @@ -13,16 +15,18 @@ from .dialogs import ( About, ElsaAddEntry, ) -from .Ui_semesterapparat_ui import Ui_MainWindow as Ui_Semesterapparat from .widgets import ( - DataGraph, FilePicker, StatusWidget, CalendarEntry, MessageCalendar, SearchStatisticPage, # + DataGraph, + ElsaDialog, + UserCreate, + EditUser, + EditProf, ) - path = pathlib.Path(__file__).parent.absolute() # from .mainwindow import Ui_MainWindow as Ui_MainWindow # from .sap import Ui_MainWindow as MainWindow_SAP diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui index 010b468..5fce33f 100644 --- a/src/ui/semesterapparat_ui.ui +++ b/src/ui/semesterapparat_ui.ui @@ -74,7 +74,7 @@ Qt::NoFocus - 0 + 2 diff --git a/src/ui/widgets/elsa_main.py b/src/ui/widgets/elsa_main.py index 0732a2e..c293485 100644 --- a/src/ui/widgets/elsa_main.py +++ b/src/ui/widgets/elsa_main.py @@ -59,7 +59,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog): data.btn_zs.click() elif mediatype == "Herausgeberwerke": data.btn_hg.click() - elif mediatype == "Monographie": + elif mediatype == "Monograpfien": data.btn_mono.click() data.exec() @@ -70,7 +70,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog): self.dokument_list_elsa.setRowCount(0) profs = self.db.getProfs() for prof in profs: - self.elsa_prof.addItem(f"{prof[3]}, {prof[2]}") + self.elsa_prof.addItem(f"{prof.lastname}, {prof.firstname}") self.elsa_prof.setCurrentText("") self.elsa_date.setText("") self.elsa_semester.setText("") @@ -155,6 +155,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog): def open_elsa(self): prof = self.elsa_table.item(self.elsa_table.currentRow(), 0).text() + print(prof) 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) diff --git a/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py b/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py index 4979139..f4cf38e 100644 --- a/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py +++ b/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py @@ -84,6 +84,7 @@ class Ui_Dialog(object): self.label_2.setObjectName("label_2") self.gridLayout_2.addWidget(self.label_2, 1, 0, 1, 1) self.elsa_prof = QtWidgets.QComboBox(parent=self.create_frame_elsa) + self.elsa_prof.setEditable(True) self.elsa_prof.setObjectName("elsa_prof") self.gridLayout_2.addWidget(self.elsa_prof, 0, 1, 1, 1) self.horizontalLayout_4 = QtWidgets.QHBoxLayout() @@ -101,7 +102,7 @@ class Ui_Dialog(object): self.dokument_list_elsa = QtWidgets.QTableWidget(parent=self.create_frame_elsa) self.dokument_list_elsa.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarPolicy.ScrollBarAlwaysOff) self.dokument_list_elsa.setObjectName("dokument_list_elsa") - self.dokument_list_elsa.setColumnCount(3) + self.dokument_list_elsa.setColumnCount(4) self.dokument_list_elsa.setRowCount(0) item = QtWidgets.QTableWidgetItem() self.dokument_list_elsa.setHorizontalHeaderItem(0, item) @@ -109,6 +110,8 @@ class Ui_Dialog(object): self.dokument_list_elsa.setHorizontalHeaderItem(1, item) item = QtWidgets.QTableWidgetItem() self.dokument_list_elsa.setHorizontalHeaderItem(2, item) + item = QtWidgets.QTableWidgetItem() + self.dokument_list_elsa.setHorizontalHeaderItem(3, item) self.dokument_list_elsa.horizontalHeader().setDefaultSectionSize(116) self.dokument_list_elsa.horizontalHeader().setMinimumSectionSize(43) self.dokument_list_elsa.verticalHeader().setMinimumSectionSize(25) @@ -223,6 +226,8 @@ class Ui_Dialog(object): item.setText(_translate("Dialog", "Dateityp")) item = self.dokument_list_elsa.horizontalHeaderItem(2) item.setText(_translate("Dialog", "Neu?")) + item = self.dokument_list_elsa.horizontalHeaderItem(3) + item.setText(_translate("Dialog", "File")) self.btn_add_document_elsa.setText(_translate("Dialog", "Dokument hinzufügen")) self.btn_open_document_elsa.setText(_translate("Dialog", "Dokument öffnen")) self.check_file_elsa.setText(_translate("Dialog", "Medien aus Dokument\n" diff --git a/src/ui/widgets/widget_sources/elsa_maindialog.ui b/src/ui/widgets/widget_sources/elsa_maindialog.ui index 1a41bf6..ce355a1 100644 --- a/src/ui/widgets/widget_sources/elsa_maindialog.ui +++ b/src/ui/widgets/widget_sources/elsa_maindialog.ui @@ -174,7 +174,11 @@ - + + + true + + @@ -238,6 +242,11 @@ Neu? + + + File + + diff --git a/src/utils/icon.py b/src/utils/icon.py index c33cf51..6f13e4a 100644 --- a/src/utils/icon.py +++ b/src/utils/icon.py @@ -1,31 +1,89 @@ import darkdetect from omegaconf import OmegaConf from PyQt6 import QtGui - +import re config = OmegaConf.load("config.yaml") config = OmegaConf.load(f"{config.icon_path}/icons.yaml") path = config.icon_path -dark = darkdetect.isDark() -mode = "dark" if dark else "light" -path = f"{path}/{mode}" -class Icon: - def __init__(self, icon_type, widget=None): + +class Icon: + def __init__(self, icon_type, widget=None,recolor=False): + dark = darkdetect.isDark() + if dark: + self.color = config.dark_color + else: + self.color = config.light_color self.icon = QtGui.QIcon() - self.add_icon(icon_type) + self.icon_path = path + config["icons"][icon_type] + self.add_icon(self.icon_path,recolor) if widget is not None: widget.setIcon(self.icon) - def add_icon(self, icon_type): - icon = config[icon_type] - icon = f"{path}/{icon}" + def add_icon(self, icon_path,recolor=False): + icon = self.changeColor(icon_path,recolor) + + # use icon bytes to create a pixmap + pixmap = QtGui.QPixmap() + pixmap.loadFromData(icon) + self.icon.addPixmap( - QtGui.QPixmap(icon), + pixmap, QtGui.QIcon.Mode.Normal, QtGui.QIcon.State.Off, ) + def overwriteColor(self, color): + # take the icon, read it as bytes and change the color in fill + icon = self.changeColor(self.icon_path) + cicon = str(icon) + fill = re.search(r"fill=\"(.*?)\"", cicon).group(1) + stroke = re.search(r"stroke=\"(.*?)\"", cicon) + if stroke: + stroke = stroke.group(1) + + if fill and stroke: + # replace stroke + newicon = icon.replace(stroke.encode(), color.encode()) + else: + newicon = icon.replace(fill.encode(), color.encode()) + + pixmap = QtGui.QPixmap() + pixmap.loadFromData(newicon) + + self.icon.addPixmap( + pixmap, + QtGui.QIcon.Mode.Normal, + QtGui.QIcon.State.Off, + ) + return self.icon + + + def changeColor(self,icon_path,recolor) -> bytes: + """change the color of the svg icon to the color set in the config file + + Args: + icon_path (str): the path to the icon, usually icons/[name].svg + + Returns: + icon: a byte representation of the icon with the new color + """ + color = self.color + with open(icon_path, "rb") as file: + icon = file.read() + if recolor: + cicon = str(icon) + + try: + fill = re.search(r"fill=\"(.*?)\"", cicon).group(1) + except AttributeError: + fill = None + if fill: + icon = icon.replace(fill.encode(), color.encode()) + return icon + + if __name__ == "__main__": print("This is a module and can not be executed directly.")