From 91ae941d032ecb2bf6115c03832c737a78433433 Mon Sep 17 00:00:00 2001 From: Vitali Graf Date: Mon, 14 Jul 2025 21:00:06 +0200 Subject: [PATCH] Config aangepasst Project-Dialog um Postgres DB erweitert --- src/conf.py | 13 ++++++++++--- src/ui/MainWindow.py | 2 +- src/ui/PdfProject.py | 34 +++++++++++++++++++++------------- src/ui/PdfProject.ui | 14 ++++++++++++-- src/ui/PdfProject_ui.py | 19 +++++++++++++++---- 5 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/conf.py b/src/conf.py index da0d8b9..5e33071 100644 --- a/src/conf.py +++ b/src/conf.py @@ -3,7 +3,6 @@ from pathlib import Path from sys import platform from typing import Tuple, Type from pydantic_yaml import to_yaml_str, parse_yaml_file_as -import polars as pl from pydantic import BaseModel from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, JsonConfigSettingsSource @@ -77,7 +76,7 @@ class PdfProject(BaseModel): saxon_jar_id: int apache_fop_id: int xsl_dir_id: int - default_xslt_params: dict[str, str] = {} + postgre_sql_db_id: int def getXsl(self) -> str: global app_settings @@ -109,6 +108,12 @@ class PdfProject(BaseModel): return value[0] if len(value) else "" + def getPostgreSqlDb(self) -> str: + global app_settings + value = [x.name for x in app_settings.postgresql_dbs if x.id == self.postgre_sql_db_id] + + return value[0] if len(value) else "" + class AppSettings(BaseSettings): java_vms: list[JavaVm] = [] @@ -155,18 +160,20 @@ class XslFile(BaseModel): id: tuple bez: str xsl_file: Path + xslt_params: dict[str, str] = {} xmls: list[Xml] = [] class TreeNode(BaseModel): id: tuple bez: str + xslt_params: dict[str, str] = {} children: list["TreeNode|XslFile"] class PdfProjectSettings(BaseModel): """ - Speichert Projekt-Einstellungen direkt im Ordner des Projekts in einer Klartextdatei YAML + Speichert die Projekteinstellungen direkt im Projektordner in einer .yaml-Datei. """ nodes: list[TreeNode] = [] diff --git a/src/ui/MainWindow.py b/src/ui/MainWindow.py index 97ac741..586d8e1 100644 --- a/src/ui/MainWindow.py +++ b/src/ui/MainWindow.py @@ -580,7 +580,7 @@ class MainWindow(QMainWindow): saxon_jar_id=project_data['saxon_jar_id'] if project_data['saxon_jar_id'] != -1 else 1, apache_fop_id=project_data['apache_fop_id'] if project_data['apache_fop_id'] != -1 else 1, xsl_dir_id=project_data['xsl_dir_id'] if project_data['xsl_dir_id'] != -1 else 1, - default_xslt_params={} + postgre_sql_db_id=project_data['postgre_sql_db_id'] if project_data['postgre_sql_db_id'] != -1 else 1, ) # Erstelle Projekt-Ordnerstruktur diff --git a/src/ui/PdfProject.py b/src/ui/PdfProject.py index 60fafba..1cd004f 100644 --- a/src/ui/PdfProject.py +++ b/src/ui/PdfProject.py @@ -70,34 +70,37 @@ class PdfProjectDlg(QDialog): # Java VM ComboBox self.ui.cB_JavaVm.clear() for java_vm in app_settings.java_vms: - display_text = f"Java VM {java_vm.version}" - self.ui.cB_JavaVm.addItem(display_text, java_vm.id) + self.ui.cB_JavaVm.addItem(java_vm.version, java_vm.id) if not app_settings.java_vms: self.ui.cB_JavaVm.addItem("Keine Java VMs konfiguriert", -1) # Saxon Jar ComboBox self.ui.cB_SaxonJar.clear() for saxon_jar in app_settings.saxon_jars: - display_text = f"Saxon {saxon_jar.version}" - self.ui.cB_SaxonJar.addItem(display_text, saxon_jar.id) + self.ui.cB_SaxonJar.addItem(saxon_jar.version, saxon_jar.id) if not app_settings.saxon_jars: self.ui.cB_SaxonJar.addItem("Keine Saxon JARs konfiguriert", -1) # Apache FOP ComboBox self.ui.cB_ApacheFop.clear() for apache_fop in app_settings.apache_fops: - display_text = f"Apache FOP {apache_fop.version}" - self.ui.cB_ApacheFop.addItem(display_text, apache_fop.id) + self.ui.cB_ApacheFop.addItem(apache_fop.version, apache_fop.id) if not app_settings.apache_fops: self.ui.cB_ApacheFop.addItem("Keine Apache FOP-Instanzen konfiguriert", -1) # diff-pdf ComboBox - self.ui.comboBox.clear() - for diff_pdf in app_settings.diff_pdfs: - display_text = f"diff-pdf {diff_pdf.version}" - self.ui.comboBox.addItem(display_text, diff_pdf.id) + self.ui.cB_Diff_Pdf.clear() + for postgres_db in app_settings.diff_pdfs: + self.ui.cB_Diff_Pdf.addItem(postgres_db.version, postgres_db.id) if not app_settings.diff_pdfs: - self.ui.comboBox.addItem("Keine diff-pdf-Instanzen konfiguriert", -1) + self.ui.cB_Diff_Pdf.addItem("Keine diff-pdf-Instanzen konfiguriert", -1) + + # Postgres ComboBox + self.ui.cB_Postgres.clear() + for postgres_db in app_settings.postgresql_dbs: + self.ui.cB_Postgres.addItem(postgres_db.name, postgres_db.id) + if not app_settings.postgresql_dbs: + self.ui.cB_Postgres.addItem("Keine Postgres-Datenbanken konfiguriert", -1) def _load_project_data(self): """Lädt bestehende Projektdaten in die Eingabefelder.""" @@ -125,7 +128,10 @@ class PdfProjectDlg(QDialog): self._select_combo_by_data(self.ui.cB_ApacheFop, self.project_data['apache_fop_id']) if 'diff_pdf_id' in self.project_data: - self._select_combo_by_data(self.ui.comboBox, self.project_data['diff_pdf_id']) + self._select_combo_by_data(self.ui.cB_Diff_Pdf, self.project_data['diff_pdf_id']) + + if 'postgre_sql_db_id' in self.project_data: + self._select_combo_by_data(self.ui.cB_Postgres, self.project_data['postgre_sql_db_id']) def _select_combo_by_data(self, combo_box, data_value): """ @@ -219,6 +225,7 @@ class PdfProjectDlg(QDialog): ) return + # Alle Validierungen bestanden self.accept() @@ -236,7 +243,8 @@ class PdfProjectDlg(QDialog): 'java_vm_id': self.ui.cB_JavaVm.currentData(), 'saxon_jar_id': self.ui.cB_SaxonJar.currentData(), 'apache_fop_id': self.ui.cB_ApacheFop.currentData(), - 'diff_pdf_id': self.ui.comboBox.currentData() + 'diff_pdf_id': self.ui.cB_Diff_Pdf.currentData(), + 'postgre_sql_db_id': self.ui.cB_Postgres.currentData() } def _configure_edit_mode(self): diff --git a/src/ui/PdfProject.ui b/src/ui/PdfProject.ui index a5b4613..a9a8f7f 100644 --- a/src/ui/PdfProject.ui +++ b/src/ui/PdfProject.ui @@ -7,7 +7,7 @@ 0 0 608 - 269 + 299 @@ -116,7 +116,17 @@ - + + + + + + Postgres: + + + + + diff --git a/src/ui/PdfProject_ui.py b/src/ui/PdfProject_ui.py index d4fe35c..9054cfc 100644 --- a/src/ui/PdfProject_ui.py +++ b/src/ui/PdfProject_ui.py @@ -24,7 +24,7 @@ class Ui_projectDlg(object): def setupUi(self, projectDlg): if not projectDlg.objectName(): projectDlg.setObjectName(u"projectDlg") - projectDlg.resize(608, 269) + projectDlg.resize(608, 299) self.verticalLayout = QVBoxLayout(projectDlg) self.verticalLayout.setObjectName(u"verticalLayout") self.widget = QWidget(projectDlg) @@ -111,10 +111,20 @@ class Ui_projectDlg(object): self.formLayout.setWidget(6, QFormLayout.ItemRole.LabelRole, self.label_7) - self.comboBox = QComboBox(self.widget) - self.comboBox.setObjectName(u"comboBox") + self.cB_Diff_Pdf = QComboBox(self.widget) + self.cB_Diff_Pdf.setObjectName(u"cB_Diff_Pdf") - self.formLayout.setWidget(6, QFormLayout.ItemRole.FieldRole, self.comboBox) + self.formLayout.setWidget(6, QFormLayout.ItemRole.FieldRole, self.cB_Diff_Pdf) + + self.label_8 = QLabel(self.widget) + self.label_8.setObjectName(u"label_8") + + self.formLayout.setWidget(7, QFormLayout.ItemRole.LabelRole, self.label_8) + + self.cB_Postgres = QComboBox(self.widget) + self.cB_Postgres.setObjectName(u"cB_Postgres") + + self.formLayout.setWidget(7, QFormLayout.ItemRole.FieldRole, self.cB_Postgres) self.verticalLayout.addWidget(self.widget) @@ -145,5 +155,6 @@ class Ui_projectDlg(object): self.label_5.setText(QCoreApplication.translate("projectDlg", u"Saxon Jar:", None)) self.label_6.setText(QCoreApplication.translate("projectDlg", u"Apache FOP:", None)) self.label_7.setText(QCoreApplication.translate("projectDlg", u"diff-pdf:", None)) + self.label_8.setText(QCoreApplication.translate("projectDlg", u"Postgres:", None)) # retranslateUi