Test der Datenbank-Verbindung
This commit is contained in:
@@ -37,6 +37,7 @@ class AppSettingsDlg(QDialog):
|
||||
self.temp_apache_fops = self.settings.apache_fops.copy()
|
||||
self.temp_xsl_dirs = self.settings.xsl_dirs.copy()
|
||||
self.temp_pdf_projects = self.settings.pdf_projects.copy()
|
||||
self.temp_postgresql_dbs = self.settings.postgresql_dbs.copy()
|
||||
|
||||
# Signale verbinden
|
||||
self._connect_signals()
|
||||
@@ -77,6 +78,11 @@ class AppSettingsDlg(QDialog):
|
||||
self.ui.addProject.clicked.connect(self._add_pdf_project)
|
||||
self.ui.tablePdfProjects.itemSelectionChanged.connect(self._update_pdf_project_buttons)
|
||||
|
||||
# PostgreSQL Tab
|
||||
self.ui.addPostgreSql.clicked.connect(self._add_postgresql_db)
|
||||
self.ui.removePostgreSql.clicked.connect(self._remove_postgresql_db)
|
||||
self.ui.tablePostgreSqlDbs.itemSelectionChanged.connect(self._update_postgresql_db_buttons)
|
||||
|
||||
def _setup_tables(self):
|
||||
"""Richtet die Tabellen-Header ein und macht sie unveränderbar."""
|
||||
from PySide6.QtWidgets import QAbstractItemView
|
||||
@@ -111,6 +117,11 @@ class AppSettingsDlg(QDialog):
|
||||
self.ui.tablePdfProjects.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
|
||||
self.ui.tablePdfProjects.doubleClicked.connect(self._edit_pdf_project)
|
||||
|
||||
# PostgreSQL Tabelle
|
||||
self.ui.tablePostgreSqlDbs.setHorizontalHeaderLabels(["Name", "Host", "Port", "Datenbank", "Benutzer"])
|
||||
self.ui.tablePostgreSqlDbs.setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers)
|
||||
self.ui.tablePostgreSqlDbs.doubleClicked.connect(self._edit_postgresql_db)
|
||||
|
||||
def _populate_tables(self):
|
||||
"""Füllt alle Tabellen mit den aktuellen Einstellungen."""
|
||||
self._populate_xsl_table()
|
||||
@@ -119,6 +130,7 @@ class AppSettingsDlg(QDialog):
|
||||
self._populate_apache_fop_table()
|
||||
self._populate_diff_pdf_table()
|
||||
self._populate_pdf_project_table()
|
||||
self._populate_postgresql_db_table()
|
||||
|
||||
def _populate_xsl_table(self):
|
||||
"""Füllt die XSL-Ordner Tabelle."""
|
||||
@@ -234,6 +246,31 @@ class AppSettingsDlg(QDialog):
|
||||
self.ui.tablePdfProjects.setItem(row, 6, diff_pdf_item)
|
||||
self.ui.tablePdfProjects.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
||||
|
||||
def _populate_postgresql_db_table(self):
|
||||
"""Füllt die PostgreSQL-Datenbank Tabelle."""
|
||||
self.ui.tablePostgreSqlDbs.setRowCount(len(self.temp_postgresql_dbs))
|
||||
for row, postgresql_db in enumerate(self.temp_postgresql_dbs):
|
||||
name_item = QTableWidgetItem(postgresql_db.name)
|
||||
name_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.ui.tablePostgreSqlDbs.setItem(row, 0, name_item)
|
||||
|
||||
host_item = QTableWidgetItem(postgresql_db.host)
|
||||
host_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.ui.tablePostgreSqlDbs.setItem(row, 1, host_item)
|
||||
|
||||
port_item = QTableWidgetItem(str(postgresql_db.port))
|
||||
port_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.ui.tablePostgreSqlDbs.setItem(row, 2, port_item)
|
||||
|
||||
database_item = QTableWidgetItem(postgresql_db.database)
|
||||
database_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.ui.tablePostgreSqlDbs.setItem(row, 3, database_item)
|
||||
|
||||
username_item = QTableWidgetItem(postgresql_db.username)
|
||||
username_item.setTextAlignment(Qt.AlignmentFlag.AlignCenter)
|
||||
self.ui.tablePostgreSqlDbs.setItem(row, 4, username_item)
|
||||
self.ui.tablePostgreSqlDbs.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
|
||||
|
||||
# XSL-Ordner Methoden
|
||||
def _add_xsl_dir(self):
|
||||
"""Fügt einen neuen XSL-Ordner hinzu."""
|
||||
@@ -598,6 +635,75 @@ class AppSettingsDlg(QDialog):
|
||||
|
||||
self._populate_pdf_project_table()
|
||||
|
||||
# PostgreSQL Methoden
|
||||
def _add_postgresql_db(self):
|
||||
"""Fügt eine neue PostgreSQL-Datenbank hinzu."""
|
||||
dialog = PostgreSqlConfigDialog(self)
|
||||
if dialog.exec() == QDialog.DialogCode.Accepted:
|
||||
data = dialog.get_data()
|
||||
if data:
|
||||
new_id = max([x.id for x in self.temp_postgresql_dbs], default=0) + 1
|
||||
new_postgresql_db = PostgreSqlDb(
|
||||
id=new_id,
|
||||
name=data["name"],
|
||||
host=data["host"],
|
||||
port=data["port"],
|
||||
database=data["database"],
|
||||
username=data["username"],
|
||||
password=data["password"]
|
||||
)
|
||||
self.temp_postgresql_dbs.append(new_postgresql_db)
|
||||
self._populate_postgresql_db_table()
|
||||
|
||||
self.settings.postgresql_dbs = self.temp_postgresql_dbs.copy()
|
||||
self.settings.save()
|
||||
|
||||
def _remove_postgresql_db(self):
|
||||
"""Entfernt die ausgewählte PostgreSQL-Datenbank."""
|
||||
current_row = self.ui.tablePostgreSqlDbs.currentRow()
|
||||
if current_row >= 0:
|
||||
del self.temp_postgresql_dbs[current_row]
|
||||
self._populate_postgresql_db_table()
|
||||
self._update_postgresql_db_buttons()
|
||||
|
||||
self.settings.postgresql_dbs = self.temp_postgresql_dbs.copy()
|
||||
self.settings.save()
|
||||
|
||||
def _update_postgresql_db_buttons(self):
|
||||
"""Aktualisiert den Status der PostgreSQL-Buttons."""
|
||||
has_selection = self.ui.tablePostgreSqlDbs.currentRow() >= 0
|
||||
self.ui.removePostgreSqlDb.setEnabled(has_selection)
|
||||
|
||||
def _edit_postgresql_db(self, index):
|
||||
"""Bearbeitet eine PostgreSQL-Datenbank per Doppelklick."""
|
||||
row = index.row()
|
||||
if 0 <= row < len(self.temp_postgresql_dbs):
|
||||
postgresql_db = self.temp_postgresql_dbs[row]
|
||||
dialog = PostgreSqlConfigDialog(self)
|
||||
|
||||
# Vorhandene Daten setzen
|
||||
data = {
|
||||
"name": postgresql_db.name,
|
||||
"host": postgresql_db.host,
|
||||
"port": postgresql_db.port,
|
||||
"database": postgresql_db.database,
|
||||
"username": postgresql_db.username,
|
||||
"password": postgresql_db.password
|
||||
}
|
||||
dialog.set_data(data)
|
||||
|
||||
if dialog.exec() == QDialog.DialogCode.Accepted:
|
||||
new_data = dialog.get_data()
|
||||
if new_data:
|
||||
# Daten aktualisieren
|
||||
postgresql_db.name = new_data["name"]
|
||||
postgresql_db.host = new_data["host"]
|
||||
postgresql_db.port = new_data["port"]
|
||||
postgresql_db.database = new_data["database"]
|
||||
postgresql_db.username = new_data["username"]
|
||||
postgresql_db.password = new_data["password"]
|
||||
self._populate_postgresql_db_table()
|
||||
|
||||
def accept(self):
|
||||
"""Übernimmt die Änderungen und schließt den Dialog."""
|
||||
# Aktualisiere die ursprünglichen Einstellungen
|
||||
|
||||
Reference in New Issue
Block a user