From 6fa3e18f22b056952ae28b8c0a9b363c65ef1ac8 Mon Sep 17 00:00:00 2001 From: WorldTeacher <41587052+WorldTeacher@users.noreply.github.com> Date: Fri, 28 Jun 2024 10:14:07 +0200 Subject: [PATCH] updates --- config.yaml | 37 ++++++++++++--- src/__init__.py | 3 +- src/backend/database.py | 9 ++-- src/logic/__init__.py | 1 + src/logic/csvparser.py | 3 +- src/ui/Ui_semesterapparat_ui.py | 26 ++++------- .../dialog_sources/Ui_elsa_add_table_entry.py | 5 +- .../dialog_sources/elsa_add_table_entry.ui | 20 ++++++-- src/ui/dialogs/settings.py | 46 +++++++++++++++---- src/ui/semesterapparat_ui.ui | 25 ++-------- 10 files changed, 109 insertions(+), 66 deletions(-) diff --git a/config.yaml b/config.yaml index 0761b46..d07083c 100644 --- a/config.yaml +++ b/config.yaml @@ -1,6 +1,11 @@ default_apps: true save_path: ~/Desktop/semap/db/temp/ icon_path: icons/ +zotero: + api_key: + library_id: "" + library_type: user + custom_applications: - name: Text files extensions: @@ -27,13 +32,31 @@ custom_applications: - xls application: Excel database: - name: semap.db + name: test.sam path: ~\Desktop\semap\db\ tempdir: ~\Desktop\semap\db\temp\ mail: - smtp_server: - port: - sender: - user_name: - use_user_name: - password: + smtp_server: '' + port: 0 + sender: '' + user_name: '' + use_user_name: false + password: '' + signature: ' + + + +


' diff --git a/src/__init__.py b/src/__init__.py index b6ed906..ac7b067 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -1,6 +1,7 @@ -__version__ = "0.1.0" +__version__ = "1.0.0" __author__ = "Alexander Kirchner" from .logic.log import MyLogger from .utils.icon import Icon +from .ui.userInterface import launch_gui as UI diff --git a/src/backend/database.py b/src/backend/database.py index 4af46c8..58fa213 100644 --- a/src/backend/database.py +++ b/src/backend/database.py @@ -148,8 +148,8 @@ class Database: conn = self.connect() cursor = conn.cursor() log_message = f"Querying database with query {query}, args: {args}" - if "INSERT" in query: - log_message = f"Querying database with query {query}" + # if "INSERT" in query: + # log_message = f"Querying database with query {query}" self.logger.log_info(log_message) @@ -661,7 +661,10 @@ class Database: data = self.getProfByName(prof_name.replace(",", "")) if data is None: - return None + # get last used id and return id + 1 + profno = self.query_db("SELECT id FROM prof ORDER BY id DESC", one=True)[0] + return profno + 1 + # return None else: return data[0] diff --git a/src/logic/__init__.py b/src/logic/__init__.py index 46ee042..5a6587c 100644 --- a/src/logic/__init__.py +++ b/src/logic/__init__.py @@ -7,3 +7,4 @@ from .dataclass import ApparatData, BookData from .csvparser import csv_to_list from .wordparser import elsa_word_to_csv, word_docx_to_csv from .log import MyLogger +from .zotero import ZoteroController diff --git a/src/logic/csvparser.py b/src/logic/csvparser.py index 7653ce7..846a257 100644 --- a/src/logic/csvparser.py +++ b/src/logic/csvparser.py @@ -7,7 +7,8 @@ def csv_to_list(path: str) -> list[str]: """ Extracts the data from a csv file and returns it as a pandas dataframe """ - with open(path, newline="") as csvfile: + with open(path, newline="", encoding="utf-8") as csvfile: + # if decoder fails to map, assign "" reader = csv.reader(csvfile, delimiter=";", quotechar="|") ret = [] for row in reader: diff --git a/src/ui/Ui_semesterapparat_ui.py b/src/ui/Ui_semesterapparat_ui.py index a076e29..e208e91 100644 --- a/src/ui/Ui_semesterapparat_ui.py +++ b/src/ui/Ui_semesterapparat_ui.py @@ -1118,9 +1118,6 @@ class Ui_MainWindow(object): self.label_42.setObjectName("label_42") self.gridLayout_12.addWidget(self.label_42, 2, 0, 1, 1) self.gridLayout_14.addLayout(self.gridLayout_12, 0, 0, 1, 1) - self.reset_selection = QtWidgets.QToolButton(parent=self.admin) - self.reset_selection.setGeometry(QtCore.QRect(250, 30, 22, 22)) - self.reset_selection.setObjectName("reset_selection") self.tabWidget.addTab(self.admin, "") self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1) self.horizontalLayout.addLayout(self.gridLayout) @@ -1309,11 +1306,10 @@ class Ui_MainWindow(object): self.retranslateUi(MainWindow) self.tabWidget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) - MainWindow.setTabOrder(self.drpdwn_app_nr, self.prof_title) - MainWindow.setTabOrder(self.prof_title, self.drpdwn_prof_name) - MainWindow.setTabOrder(self.drpdwn_prof_name, self.prof_tel_nr) - MainWindow.setTabOrder(self.prof_tel_nr, self.prof_mail) - MainWindow.setTabOrder(self.prof_mail, self.app_name) + MainWindow.setTabOrder(self.drpdwn_app_nr, self.drpdwn_prof_name) + MainWindow.setTabOrder(self.drpdwn_prof_name, self.prof_mail) + MainWindow.setTabOrder(self.prof_mail, self.prof_tel_nr) + MainWindow.setTabOrder(self.prof_tel_nr, self.app_name) MainWindow.setTabOrder(self.app_name, self.app_fach) MainWindow.setTabOrder(self.app_fach, self.sem_winter) MainWindow.setTabOrder(self.sem_winter, self.sem_sommer) @@ -1363,15 +1359,10 @@ class Ui_MainWindow(object): MainWindow.setTabOrder(self.elsa_statistics_table, self.elsa_cancel_create) MainWindow.setTabOrder(self.elsa_cancel_create, self.elsa_add_new) MainWindow.setTabOrder(self.elsa_add_new, self.elsa_table) - MainWindow.setTabOrder(self.elsa_table, self.reset_selection) - MainWindow.setTabOrder(self.reset_selection, self.valid_check_app_fach) - MainWindow.setTabOrder(self.valid_check_app_fach, self.edit_faculty_member_new_surname) - MainWindow.setTabOrder(self.edit_faculty_member_new_surname, self.valid_check_profname) - MainWindow.setTabOrder(self.valid_check_profname, self.valid_check_appname) - MainWindow.setTabOrder(self.valid_check_appname, self.valid_check_semester) - MainWindow.setTabOrder(self.valid_check_semester, self.valid_check_mail) - MainWindow.setTabOrder(self.valid_check_mail, self.valid_check_telnr) - MainWindow.setTabOrder(self.valid_check_telnr, self.edit_faculty_member_new_title) + MainWindow.setTabOrder(self.elsa_table, self.edit_faculty_member_new_surname) + MainWindow.setTabOrder(self.edit_faculty_member_new_surname, self.edit_faculty_member_new_title) + MainWindow.setTabOrder(self.edit_faculty_member_new_title, self.elsa_update) + MainWindow.setTabOrder(self.elsa_update, self.quote_entry) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate @@ -1548,7 +1539,6 @@ class Ui_MainWindow(object): self.label_41.setText(_translate("MainWindow", "Alte Angaben")) self.update_faculty_member.setText(_translate("MainWindow", "Aktualisieren")) self.label_42.setText(_translate("MainWindow", "Neue Angaben")) - self.reset_selection.setText(_translate("MainWindow", "...")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.admin), _translate("MainWindow", "Admin")) self.groupBox_2.setTitle(_translate("MainWindow", "Software")) self.appdata_check.setText(_translate("MainWindow", "Apparatsdaten eingegeben")) diff --git a/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py b/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py index 4903dd4..d27e3d8 100644 --- a/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py +++ b/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py @@ -257,6 +257,7 @@ class Ui_Dialog(object): self.label_32.setObjectName("label_32") self.gridLayout_5.addWidget(self.label_32, 0, 0, 1, 1) self.file_desc_edit = QtWidgets.QTextEdit(parent=self.page) + self.file_desc_edit.setReadOnly(True) self.file_desc_edit.setObjectName("file_desc_edit") self.gridLayout_5.addWidget(self.file_desc_edit, 5, 0, 1, 1) spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Policy.Minimum, QtWidgets.QSizePolicy.Policy.Expanding) @@ -273,12 +274,14 @@ class Ui_Dialog(object): self.label_33.setObjectName("label_33") self.gridLayout_5.addWidget(self.label_33, 4, 0, 1, 1) self.filename_edit = QtWidgets.QTextEdit(parent=self.page) + self.filename_edit.setReadOnly(True) self.filename_edit.setObjectName("filename_edit") self.gridLayout_5.addWidget(self.filename_edit, 1, 0, 1, 1) self.label_34 = QtWidgets.QLabel(parent=self.page) self.label_34.setObjectName("label_34") self.gridLayout_5.addWidget(self.label_34, 2, 0, 1, 1) self.ilias_filename = QtWidgets.QTextEdit(parent=self.page) + self.ilias_filename.setReadOnly(True) self.ilias_filename.setObjectName("ilias_filename") self.gridLayout_5.addWidget(self.ilias_filename, 3, 0, 1, 1) self.copy_ilias_filename = QtWidgets.QToolButton(parent=self.page) @@ -293,7 +296,7 @@ class Ui_Dialog(object): self.verticalLayout.addWidget(self.buttonBox) self.retranslateUi(Dialog) - self.stackedWidget.setCurrentIndex(0) + self.stackedWidget.setCurrentIndex(3) self.buttonBox.accepted.connect(Dialog.accept) # type: ignore self.buttonBox.rejected.connect(Dialog.reject) # type: ignore QtCore.QMetaObject.connectSlotsByName(Dialog) diff --git a/src/ui/dialogs/dialog_sources/elsa_add_table_entry.ui b/src/ui/dialogs/dialog_sources/elsa_add_table_entry.ui index 07f0462..3835662 100644 --- a/src/ui/dialogs/dialog_sources/elsa_add_table_entry.ui +++ b/src/ui/dialogs/dialog_sources/elsa_add_table_entry.ui @@ -110,7 +110,7 @@ - 0 + 3 @@ -457,7 +457,11 @@ Nachname, Vorname - + + + true + + @@ -500,7 +504,11 @@ Nachname, Vorname - + + + true + + @@ -510,7 +518,11 @@ Nachname, Vorname - + + + true + + diff --git a/src/ui/dialogs/settings.py b/src/ui/dialogs/settings.py index 3ea7f14..3481ea2 100644 --- a/src/ui/dialogs/settings.py +++ b/src/ui/dialogs/settings.py @@ -6,6 +6,24 @@ from src import Icon from .dialog_sources.settings_ui import Ui_Dialog as _settings config = OmegaConf.load("config.yaml") +base = """' + + + +


'""" class Settings(QtWidgets.QDialog, _settings): @@ -21,7 +39,7 @@ class Settings(QtWidgets.QDialog, _settings): self.underscore.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) self.font_size.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) self.fontComboBox.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) - + self.setWindowIcon(Icon("settings").icon) self.font_size.setCurrentText("9") # add button to toggle password visibility if user == "admin": @@ -52,7 +70,9 @@ class Settings(QtWidgets.QDialog, _settings): self.sender_email.setText(config.mail.sender) self.mail_username.setText(config.mail.user_name) self.password.setText(config.mail.password) - self.use_username_smtp_login.setChecked(config.mail.use_user_name) + self.use_username_smtp_login.setChecked( + config.mail.use_user_name if config.mail.use_user_name else False + ) self.editSignature.setHtml(config.mail.signature) def setCurrentFont(self): @@ -66,17 +86,15 @@ class Settings(QtWidgets.QDialog, _settings): def toggle_password(self): self.togglePassword.setIconSize(QtCore.QSize(16, 16)) - on_icon = Icon("hide_password") - off_icon = Icon("show_password") if self.showPassword is False: self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal) - off_icon.set_icon(self.togglePassword) + Icon("show_password", self.togglePassword) self.showPassword = True else: self.password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password) - on_icon.set_icon(self.togglePassword) + Icon("hide_password", self.togglePassword) self.showPassword = False def setFontBold(self): @@ -121,16 +139,26 @@ class Settings(QtWidgets.QDialog, _settings): print(self.editSignature.toHtml()) def return_data(self): + port = self.smtp_port.text() + if port != "None": + port = int(port) + else: + port = 0 + signature = self.editSignature.toHtml() + if signature != base: + signature = signature + else: + signature = "" config.database.name = self.db_name.text() config.database.path = self.db_path.text() config.save_path = self.save_path.text() config.mail.smtp_server = self.smtp_address.text() - config.mail.port = int(self.smtp_port.text()) + config.mail.port = port config.mail.sender = self.sender_email.text() config.mail.user_name = self.mail_username.text() config.mail.password = self.password.text() config.mail.use_user_name = self.use_username_smtp_login.isChecked() - config.mail.signature = self.editSignature.toHtml() + config.mail.signature = signature return config @@ -144,6 +172,6 @@ def launch_settings(): import sys app = QtWidgets.QApplication(sys.argv) - window = Settings() + window = Settings("admin") window.show() sys.exit(app.exec()) diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui index eb1e7cb..7c68071 100644 --- a/src/ui/semesterapparat_ui.ui +++ b/src/ui/semesterapparat_ui.ui @@ -2766,19 +2766,6 @@
- - - - 250 - 30 - 22 - 22 - - - - ... - - @@ -3135,10 +3122,9 @@ drpdwn_app_nr - prof_title drpdwn_prof_name - prof_tel_nr prof_mail + prof_tel_nr app_name app_fach sem_winter @@ -3189,15 +3175,10 @@ elsa_cancel_create elsa_add_new elsa_table - reset_selection - valid_check_app_fach edit_faculty_member_new_surname - valid_check_profname - valid_check_appname - valid_check_semester - valid_check_mail - valid_check_telnr edit_faculty_member_new_title + elsa_update + quote_entry