migrate from PyQt6 to PySide6, remove unneeded dependencies
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
from .widget_sources.welcome_wizard_ui import Ui_Wizard
|
||||
from PyQt6 import QtWidgets, QtCore, QtGui
|
||||
from PySide6 import QtWidgets, QtCore, QtGui
|
||||
from src import settings
|
||||
from src.backend import AdminCommands
|
||||
from appdirs import AppDirs
|
||||
|
||||
appdirs = AppDirs("SemesterApparatsManager", "SAM")
|
||||
|
||||
class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
|
||||
def __init__(self, parent=None):
|
||||
@@ -8,21 +12,146 @@ class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
|
||||
self.setupUi(self)
|
||||
self.btn_database.clicked.connect(self.open_database_settings)
|
||||
self.btn_temp.clicked.connect(self.open_temp_settings)
|
||||
self.btn_test.clicked.connect(self.test_login_data)
|
||||
self.btn_create.clicked.connect(self.create_sam_user)
|
||||
# mail password field
|
||||
self.settings_mail_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
|
||||
# allow user to toggle password visibility
|
||||
self.settings_mail_password.setContextMenuPolicy(
|
||||
QtCore.Qt.ContextMenuPolicy.CustomContextMenu
|
||||
)
|
||||
self.settings_mail_password.customContextMenuRequested.connect(
|
||||
self.toggle_password_visibility
|
||||
)
|
||||
# if button for next page is clicked, run function to store settings
|
||||
self.button(QtWidgets.QWizard.WizardButton.FinishButton).clicked.connect(
|
||||
self.store_settings
|
||||
)
|
||||
self.settings_mail_use_user_name.toggled.connect(self.set_check_text)
|
||||
# set initial values for checkbox, database
|
||||
self.set_check_text(self.settings_mail_use_user_name.isChecked())
|
||||
self.settings_database.setText(
|
||||
str(settings.database.path) or str(appdirs.user_data_dir)
|
||||
)
|
||||
|
||||
self.settings_temp.setText(
|
||||
str(settings.database.temp) or str(appdirs.user_cache_dir)
|
||||
)
|
||||
|
||||
def test_login_data(self):
|
||||
sam_users = AdminCommands().list_users()
|
||||
sam_users = [user[2] for user in sam_users]
|
||||
if not sam_users:
|
||||
QtWidgets.QMessageBox.critical(
|
||||
self,
|
||||
"Error",
|
||||
"No SAM users found. Please create a SAM user first.",
|
||||
)
|
||||
return
|
||||
username = self.sam_username.text()
|
||||
if username in sam_users:
|
||||
QtWidgets.QMessageBox.information(
|
||||
self,
|
||||
"Error",
|
||||
f"User '{username}' exists in SAM.",
|
||||
)
|
||||
|
||||
def create_sam_user(self):
|
||||
"""Create a SAM user in the database."""
|
||||
admin = AdminCommands()
|
||||
if not admin.create_user(self.sam_username.text(), self.sam_password.text()):
|
||||
QtWidgets.QMessageBox.critical(
|
||||
self,
|
||||
"Error",
|
||||
"Failed to create SAM user",
|
||||
)
|
||||
else:
|
||||
QtWidgets.QMessageBox.information(
|
||||
self,
|
||||
"Success",
|
||||
"SAM user created successfully",
|
||||
)
|
||||
|
||||
def set_check_text(self, checked):
|
||||
"""Set the text of the checkbox based on its state."""
|
||||
if checked:
|
||||
self.settings_mail_use_user_name.setText("Nutzername wird verwendet")
|
||||
else:
|
||||
self.settings_mail_use_user_name.setText("Nutzername wird nicht verwendet")
|
||||
|
||||
def toggle_password_visibility(self, pos):
|
||||
"""Toggle the visibility of the password field."""
|
||||
if (
|
||||
self.settings_mail_password.echoMode()
|
||||
== QtWidgets.QLineEdit.EchoMode.Password
|
||||
):
|
||||
self.settings_mail_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)
|
||||
else:
|
||||
self.settings_mail_password.setEchoMode(
|
||||
QtWidgets.QLineEdit.EchoMode.Password
|
||||
)
|
||||
|
||||
def store_settings(self):
|
||||
# database page
|
||||
db_path = self.settings_database.text()
|
||||
temp_path = self.settings_temp.text()
|
||||
db_name = self.settings_database_name.text()
|
||||
|
||||
# mail page
|
||||
smtp_server = self.settings_mail_smtp_server.text()
|
||||
smtp_port = self.settings_mail_smtp_port.text()
|
||||
mail_sender = self.settings_mail_address.text()
|
||||
mail_user_name = self.settings_mail_user_name.text()
|
||||
mail_password = self.settings_mail_password.text()
|
||||
mail_printer_mail = self.settings_mail_printer.text()
|
||||
mail_signature = self.settings_mail_signature.toPlainText()
|
||||
use_user_name = self.settings_mail_use_user_name.isChecked()
|
||||
|
||||
# zotero page
|
||||
zotero__api_key = self.settings_zotero_api_key.text()
|
||||
zotero_user_id = self.settings_zotero_library_id.text()
|
||||
zotero_library_type = self.settings_zotero_library_type.text()
|
||||
|
||||
# openai page
|
||||
openai_api_key = self.settings_openai_api_key.text()
|
||||
openai_model = self.settings_openai_model.currentText()
|
||||
|
||||
# store settings in config
|
||||
settings.set_database_attr("path", db_path)
|
||||
settings.set_database_attr("name", db_name)
|
||||
settings.set_database_attr("temp", temp_path)
|
||||
settings.set_mail_attr("smtp_server", smtp_server)
|
||||
settings.set_mail_attr("port", smtp_port)
|
||||
settings.set_mail_attr("sender", mail_sender)
|
||||
settings.set_mail_attr("user_name", mail_user_name)
|
||||
settings.set_mail_attr("password", mail_password)
|
||||
settings.set_mail_attr("printer_mail", mail_printer_mail)
|
||||
settings.set_mail_attr("signature", mail_signature)
|
||||
settings.set_mail_attr("use_user_name", use_user_name)
|
||||
settings.set_zotero_attr("api_key", zotero__api_key)
|
||||
settings.set_zotero_attr("library_id", zotero_user_id)
|
||||
settings.set_zotero_attr("library_type", zotero_library_type)
|
||||
settings.set_openai_attr("api_key", openai_api_key)
|
||||
settings.set_openai_attr("model", openai_model)
|
||||
# save settings to file
|
||||
print("Saving settings...")
|
||||
print(settings)
|
||||
settings.save()
|
||||
|
||||
def open_database_settings(self):
|
||||
#open filepicker dialog to select database file folder
|
||||
file_dialog = QtWidgets.QFileDialog(self, "Select Database File")
|
||||
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.ExistingFile)
|
||||
file_dialog.setNameFilter("Database Files (*.db *.sqlite *.sqlite3)")
|
||||
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
|
||||
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.List)
|
||||
file_dialog.setDirectory(settings.database.path) # Set initial directory if needed
|
||||
file_dialog.setOption(QtWidgets.QFileDialog.Option.DontUseNativeDialog, True)
|
||||
file_dialog.setWindowFlags(file_dialog.windowFlags() | QtCore.Qt.WindowType.WindowStaysOnTopHint)
|
||||
# set start dir to appdir.user_data_dir
|
||||
file_dialog.setDirectory(str(appdirs.user_data_dir))
|
||||
if file_dialog.exec():
|
||||
selected_files = file_dialog.selectedFiles()
|
||||
if selected_files:
|
||||
# Do something with the selected database file
|
||||
print("Selected database file:", selected_files[0])
|
||||
db_path = selected_files[0]
|
||||
self.settings_database.setText(db_path)
|
||||
|
||||
def open_temp_settings(self):
|
||||
#open filepicker dialog to select temporary directory
|
||||
@@ -34,8 +163,8 @@ class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
|
||||
selected_dirs = dir_dialog.selectedFiles()
|
||||
if selected_dirs:
|
||||
# Do something with the selected temporary directory
|
||||
print("Selected temporary directory:", selected_dirs[0])
|
||||
|
||||
temp_path = selected_dirs[0]
|
||||
self.settings_temp.setText(temp_path)
|
||||
|
||||
def launch_wizard():
|
||||
"""Launch the welcome wizard."""
|
||||
|
||||
Reference in New Issue
Block a user