diff --git a/src/ui/Ui_semesterapparat_ui.py b/src/ui/Ui_semesterapparat_ui.py index 8add521..72d5357 100644 --- a/src/ui/Ui_semesterapparat_ui.py +++ b/src/ui/Ui_semesterapparat_ui.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\semesterapparat_ui.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. @@ -160,6 +160,9 @@ class Ui_MainWindow(object): self.avail_status = QtWidgets.QLabel(parent=self.gridLayoutWidget_2) self.avail_status.setObjectName("avail_status") self.horizontalLayout_5.addWidget(self.avail_status) + self.automation_add_selected_books = QtWidgets.QPushButton(parent=self.gridLayoutWidget_2) + self.automation_add_selected_books.setObjectName("automation_add_selected_books") + self.horizontalLayout_5.addWidget(self.automation_add_selected_books) spacerItem5 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum) self.horizontalLayout_5.addItem(spacerItem5) self.gridLayout_2.addLayout(self.horizontalLayout_5, 4, 0, 1, 1) @@ -581,6 +584,13 @@ class Ui_MainWindow(object): self.valid_check_telnr.setText("") self.valid_check_telnr.setAutoRaise(True) self.valid_check_telnr.setObjectName("valid_check_telnr") + self.pushButton = QtWidgets.QPushButton(parent=self.app_group_box) + self.pushButton.setGeometry(QtCore.QRect(270, 180, 161, 24)) + font = QtGui.QFont() + font.setPointSize(9) + font.setBold(False) + self.pushButton.setFont(font) + self.pushButton.setObjectName("pushButton") self.gridLayout_2.addWidget(self.app_group_box, 1, 0, 1, 1) self.add_medium = QtWidgets.QPushButton(parent=self.createApparat) self.add_medium.setGeometry(QtCore.QRect(3, 695, 121, 20)) @@ -805,6 +815,8 @@ class Ui_MainWindow(object): MainWindow.setTabOrder(self.btn_reserve, self.select_action_box) MainWindow.setTabOrder(self.select_action_box, self.prof_id_adis) MainWindow.setTabOrder(self.prof_id_adis, self.apparat_id_adis) + MainWindow.setTabOrder(self.apparat_id_adis, self.automation_add_selected_books) + MainWindow.setTabOrder(self.automation_add_selected_books, self.pushButton) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate @@ -832,6 +844,7 @@ class Ui_MainWindow(object): self.progress_label.setText(_translate("MainWindow", "Medium x/y")) self.label_20.setText(_translate("MainWindow", "Medien werden geprüft")) self.avail_status.setText(_translate("MainWindow", "TextLabel")) + self.automation_add_selected_books.setText(_translate("MainWindow", "Ausgewählte als verfügbar markieren")) self.tableWidget_apparat_media.setSortingEnabled(True) item = self.tableWidget_apparat_media.horizontalHeaderItem(0) item.setText(_translate("MainWindow", "Buchtitel")) @@ -891,6 +904,7 @@ class Ui_MainWindow(object): self.label_6.setText(_translate("MainWindow", "Semester")) self.valid_check_profname.setStatusTip(_translate("MainWindow", "Format: Nachname, Vorname")) self.valid_check_mail.setStatusTip(_translate("MainWindow", "mail@irgendwas.wasanderes")) + self.pushButton.setText(_translate("MainWindow", "Speichern und anlegen")) self.add_medium.setText(_translate("MainWindow", "Medien hinzufügen")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.createApparat), _translate("MainWindow", "Anlegen")) self.tabWidget.setTabText(self.tabWidget.indexOf(self.search_statistics), _translate("MainWindow", "Suchen / Statistik")) diff --git a/src/ui/Ui_switchtest.py b/src/ui/Ui_switchtest.py new file mode 100644 index 0000000..b2895b4 --- /dev/null +++ b/src/ui/Ui_switchtest.py @@ -0,0 +1,50 @@ +# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\switchtest.ui' +# +# Created by: PyQt6 UI code generator 6.6.1 +# +# WARNING: Any manual changes made to this file will be lost when pyuic6 is +# run again. Do not edit this file unless you know what you are doing. + + +from PyQt6 import QtCore, QtGui, QtWidgets + + +class Ui_MainWindow(object): + def setupUi(self, MainWindow): + MainWindow.setObjectName("MainWindow") + MainWindow.setWindowModality(QtCore.Qt.WindowModality.WindowModal) + MainWindow.resize(800, 600) + self.centralwidget = QtWidgets.QWidget(parent=MainWindow) + self.centralwidget.setObjectName("centralwidget") + self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget) + self.verticalLayout.setObjectName("verticalLayout") + self.select_action_box = QtWidgets.QComboBox(parent=self.centralwidget) + self.select_action_box.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.select_action_box.setObjectName("select_action_box") + self.select_action_box.addItem("") + self.select_action_box.addItem("") + self.select_action_box.addItem("") + self.select_action_box.addItem("") + self.verticalLayout.addWidget(self.select_action_box) + self.localwidget = QtWidgets.QWidget(parent=self.centralwidget) + self.localwidget.setObjectName("localwidget") + self.verticalLayout.addWidget(self.localwidget) + MainWindow.setCentralWidget(self.centralwidget) + self.menubar = QtWidgets.QMenuBar(parent=MainWindow) + self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22)) + self.menubar.setObjectName("menubar") + MainWindow.setMenuBar(self.menubar) + self.statusbar = QtWidgets.QStatusBar(parent=MainWindow) + self.statusbar.setObjectName("statusbar") + MainWindow.setStatusBar(self.statusbar) + + self.retranslateUi(MainWindow) + QtCore.QMetaObject.connectSlotsByName(MainWindow) + + def retranslateUi(self, MainWindow): + _translate = QtCore.QCoreApplication.translate + MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) + self.select_action_box.setItemText(0, _translate("MainWindow", "Aktion auswählen")) + self.select_action_box.setItemText(1, _translate("MainWindow", "edit_prof")) + self.select_action_box.setItemText(2, _translate("MainWindow", "add_user")) + self.select_action_box.setItemText(3, _translate("MainWindow", "edit_user")) diff --git a/src/ui/dialogs/mail.py b/src/ui/dialogs/mail.py index 4cae971..f43d484 100644 --- a/src/ui/dialogs/mail.py +++ b/src/ui/dialogs/mail.py @@ -1,19 +1,36 @@ import os import sys -from omegaconf import OmegaConf from PyQt6 import QtCore, QtGui, QtWidgets -from src import Icon +from src import Icon, settings as config from src.logic.log import MyLogger from .dialog_sources.Ui_mail_preview import Ui_eMailPreview as MailPreviewDialog from .mailTemplate import MailTemplateDialog -config = OmegaConf.load("config.yaml") logger = MyLogger("Mail") +empty_signature = """ + + + +


+""" class Mail_Dialog(QtWidgets.QDialog, MailPreviewDialog): def __init__( @@ -73,11 +90,11 @@ class Mail_Dialog(QtWidgets.QDialog, MailPreviewDialog): pass def determine_signature(self): - if config.mail.signature is None: + if config.mail.signature is empty_signature or config.mail.signature == "": return """Mit freundlichen Grüßen Ihr Semesterapparatsteam Mail: semesterapparate@ph-freiburg.de -Tel.: 0761/682-778""" +Tel.: 0761/682-778 | 07617682-545""" else: return config.mail.signature @@ -140,10 +157,10 @@ Tel.: 0761/682-778""" tolist = [self.prof_mail, "semesterapparate@ph-freiburg.de"] self.btn_okay.setText("Mail wird gesendet") - smtp_server = config["mail"]["smtp_server"] - port: int = config["mail"]["port"] - sender_email = config["mail"]["sender"] - password = config["mail"]["password"] + smtp_server = config.mail.smtp_server + port: int = config.mail.port + sender_email = config.mail.sender + password = config.mail.password message = MIMEMultipart() message["From"] = sender_email message["To"] = self.prof_mail @@ -155,18 +172,21 @@ Tel.: 0761/682-778""" message.attach(MIMEText(mail_body, "html")) mail = message.as_string() - server = smtplib.SMTP_SSL(smtp_server, port) - # server.starttls() + with smtplib.SMTP_SSL(smtp_server, port) as server: + server.connect(smtp_server, port) + # server.connect(smtp_server, port) # server.auth(mechanism="PLAIN") - if config["mail"]["use_user_name"] is True: - # print(config["mail"]["user_name"]) - server.login(config["mail"]["user_name"], password) - else: - server.login(sender_email, password) - server.sendmail(sender_email, tolist, mail) + if config.mail.use_user_name is True: + # print(config["mail"]["user_name"]) + + server.login(config.mail.user_name, password) + else: + server.login(sender_email, password) + server.sendmail(sender_email, tolist, mail) + # print("Mail sent") # end active process - server.quit() + server.quit() logger.log_info("Mail sent, closing connection to server and dialog") # close the dialog diff --git a/src/ui/dialogs/mailTemplate.py b/src/ui/dialogs/mailTemplate.py index d075fb6..af13d64 100644 --- a/src/ui/dialogs/mailTemplate.py +++ b/src/ui/dialogs/mailTemplate.py @@ -201,7 +201,7 @@ Content-Transfer-Encoding: 8bit # warning dialog Icon("template_fail", self.testTemplate) dialog = QtWidgets.QMessageBox() - dialog.setIcon(Icon("warning").icon) + Icon("warning", dialog) dialog.setText("Folgende Platzhalter fehlen im Template:") diff --git a/src/ui/semesterapparat_ui.ui b/src/ui/semesterapparat_ui.ui index 5fce33f..d291359 100644 --- a/src/ui/semesterapparat_ui.ui +++ b/src/ui/semesterapparat_ui.ui @@ -74,7 +74,7 @@ Qt::NoFocus - 2 + 0 @@ -362,6 +362,13 @@ + + + + Ausgewählte als verfügbar markieren + + + @@ -1477,6 +1484,25 @@ true + + + + 270 + 180 + 161 + 24 + + + + + 9 + false + + + + Speichern und anlegen + + @@ -1951,6 +1977,8 @@ select_action_box prof_id_adis apparat_id_adis + automation_add_selected_books + pushButton diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py index 0950fc8..7dcdc5b 100644 --- a/src/ui/userInterface.py +++ b/src/ui/userInterface.py @@ -4,23 +4,19 @@ import os import sys import tempfile -import time import webbrowser from pathlib import Path -import threading from icecream import ic from natsort import natsorted -from omegaconf import OmegaConf from PyQt6 import QtCore, QtGui, QtWidgets -from PyQt6.QtCore import QDate, QThread +from PyQt6.QtCore import QThread from PyQt6.QtGui import QRegularExpressionValidator -from src import Icon +from src import Icon, settings from src.backend import ( Database, generateSemesterByDate, - recreateFile, tempdelete, ) @@ -57,7 +53,6 @@ from src.ui import ( EditProf ) -config = OmegaConf.load("config.yaml") valid_input = (0, 0, 0, 0, 0, 0) @@ -634,8 +629,10 @@ class Ui(Ui_Semesterapparat): self.dokument_list.setItem(0, 1, QtWidgets.QTableWidgetItem(file[1])) self.dokument_list.setItem(0, 2, QtWidgets.QTableWidgetItem("")) self.dokument_list.setItem(0, 3, QtWidgets.QTableWidgetItem("Database")) + self.dokument_list.item(0, 0).setToolTip(file[0]) def btn_create_new_apparat(self): + self.frame_creation_progress.show() self.groupBox.show() self.groupBox_2.show() global valid_input @@ -655,6 +652,7 @@ class Ui(Ui_Semesterapparat): self.app_fach.setEnabled(True) self.check_send_mail.show() self.check_file.setEnabled(False) + self.drpdwn_app_nr.setFocus() if self.tableWidget_apparat_media.rowCount() > 0: self.tableWidget_apparat_media.setRowCount(0) # clear all fields @@ -685,10 +683,6 @@ class Ui(Ui_Semesterapparat): self.label_info.hide() def btn_add_medium(self): - if not self.app_group_box.isEnabled(): - self.confirm_popup("Bitte erst einen Apparat auswählen!", title="Fehler") - return - media = medienadder_ui() media.exec() mode = media.mode @@ -726,7 +720,7 @@ class Ui(Ui_Semesterapparat): # print("waiting for thread to finish") QtWidgets.QApplication.processEvents() - self.__clear_fields() + # self.__clear_fields() else: return @@ -934,7 +928,7 @@ class Ui(Ui_Semesterapparat): self.dokument_list.setItem(0, 3, QtWidgets.QTableWidgetItem(file)) # set tooltip of row 3 to the file path for each row self.dokument_list.item(0, 3).setToolTip(file) - + self.dokument_list.item(0, 0).setToolTip(filename) def open_document(self): _selected_doc_name = "" @@ -967,10 +961,6 @@ class Ui(Ui_Semesterapparat): recreateFile( _selected_doc_name, self.active_apparat, filetype=_selected_doc_filetype ) - # # if ~ in path, replace it with the home directory - # if "~" in path: - # path = path.replace("~", str(Path.home())) - # path = Path(path) def add_media_from_file(self): app_id = self.active_apparat @@ -1391,16 +1381,15 @@ class Ui(Ui_Semesterapparat): dialog.repaintSignal.connect(lambda: self.calendarWidget.reload(selected_date)) def open_settings(self): - settings = Settings(self.active_user) - settings.exec() - if settings.result() == QtWidgets.QDialog.DialogCode.Accepted: - data = settings.return_data() - # print(data) - OmegaConf.save(data, "config.yaml") - # re-load the config - OmegaConf.load("config.yaml") - self.logger.log_info("Saved settings to config.yaml") - self.reload() + print(settings.dict()) + settingsUI = Settings(self.active_user) + settingsUI.exec() + + if settingsUI.result() == QtWidgets.QDialog.DialogCode.Accepted: + settingsUI.save() + print(settings.dict()) + + # self.reload() def reload(self): state = self.confirm_popup( @@ -1477,7 +1466,6 @@ class Ui(Ui_Semesterapparat): if state == 1: self.db.deleteBook(book_id) self.update_app_media_list() - self.contact_prof(mail="deleted", location="") pass else: # get all selected rows diff --git a/src/ui/widgets/widget_sources/Ui_admin_create_user.py b/src/ui/widgets/widget_sources/Ui_admin_create_user.py index 2ee7368..df6ac8c 100644 --- a/src/ui/widgets/widget_sources/Ui_admin_create_user.py +++ b/src/ui/widgets/widget_sources/Ui_admin_create_user.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_create_user.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. diff --git a/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py b/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py index 75e2f4a..c3c9b69 100644 --- a/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py +++ b/src/ui/widgets/widget_sources/Ui_admin_edit_prof.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_prof.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. diff --git a/src/ui/widgets/widget_sources/Ui_admin_edit_user.py b/src/ui/widgets/widget_sources/Ui_admin_edit_user.py index df53449..71ebac8 100644 --- a/src/ui/widgets/widget_sources/Ui_admin_edit_user.py +++ b/src/ui/widgets/widget_sources/Ui_admin_edit_user.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_user.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. diff --git a/src/ui/widgets/widget_sources/Ui_calendar_entry.py b/src/ui/widgets/widget_sources/Ui_calendar_entry.py index 9ffad15..f328ed7 100644 --- a/src/ui/widgets/widget_sources/Ui_calendar_entry.py +++ b/src/ui/widgets/widget_sources/Ui_calendar_entry.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\calendar_entry.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. diff --git a/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py b/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py index f4cf38e..40b557a 100644 --- a/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py +++ b/src/ui/widgets/widget_sources/Ui_elsa_maindialog.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\elsa_maindialog.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. diff --git a/src/ui/widgets/widget_sources/Ui_search_statistic_page.py b/src/ui/widgets/widget_sources/Ui_search_statistic_page.py index 625d76f..15983ad 100644 --- a/src/ui/widgets/widget_sources/Ui_search_statistic_page.py +++ b/src/ui/widgets/widget_sources/Ui_search_statistic_page.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\search_statistic_page.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PyQt6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing.