Config aangepasst

Project-Dialog um Postgres DB erweitert
This commit is contained in:
2025-07-14 21:00:06 +02:00
parent 8bfdaed0b4
commit 91ae941d03
5 changed files with 59 additions and 23 deletions
+10 -3
View File
@@ -3,7 +3,6 @@ from pathlib import Path
from sys import platform from sys import platform
from typing import Tuple, Type from typing import Tuple, Type
from pydantic_yaml import to_yaml_str, parse_yaml_file_as from pydantic_yaml import to_yaml_str, parse_yaml_file_as
import polars as pl
from pydantic import BaseModel from pydantic import BaseModel
from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, JsonConfigSettingsSource from pydantic_settings import BaseSettings, PydanticBaseSettingsSource, SettingsConfigDict, JsonConfigSettingsSource
@@ -77,7 +76,7 @@ class PdfProject(BaseModel):
saxon_jar_id: int saxon_jar_id: int
apache_fop_id: int apache_fop_id: int
xsl_dir_id: int xsl_dir_id: int
default_xslt_params: dict[str, str] = {} postgre_sql_db_id: int
def getXsl(self) -> str: def getXsl(self) -> str:
global app_settings global app_settings
@@ -109,6 +108,12 @@ class PdfProject(BaseModel):
return value[0] if len(value) else "" 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): class AppSettings(BaseSettings):
java_vms: list[JavaVm] = [] java_vms: list[JavaVm] = []
@@ -155,18 +160,20 @@ class XslFile(BaseModel):
id: tuple id: tuple
bez: str bez: str
xsl_file: Path xsl_file: Path
xslt_params: dict[str, str] = {}
xmls: list[Xml] = [] xmls: list[Xml] = []
class TreeNode(BaseModel): class TreeNode(BaseModel):
id: tuple id: tuple
bez: str bez: str
xslt_params: dict[str, str] = {}
children: list["TreeNode|XslFile"] children: list["TreeNode|XslFile"]
class PdfProjectSettings(BaseModel): 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] = [] nodes: list[TreeNode] = []
+1 -1
View File
@@ -580,7 +580,7 @@ class MainWindow(QMainWindow):
saxon_jar_id=project_data['saxon_jar_id'] if project_data['saxon_jar_id'] != -1 else 1, 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, 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, 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 # Erstelle Projekt-Ordnerstruktur
+21 -13
View File
@@ -70,34 +70,37 @@ class PdfProjectDlg(QDialog):
# Java VM ComboBox # Java VM ComboBox
self.ui.cB_JavaVm.clear() self.ui.cB_JavaVm.clear()
for java_vm in app_settings.java_vms: for java_vm in app_settings.java_vms:
display_text = f"Java VM {java_vm.version}" self.ui.cB_JavaVm.addItem(java_vm.version, java_vm.id)
self.ui.cB_JavaVm.addItem(display_text, java_vm.id)
if not app_settings.java_vms: if not app_settings.java_vms:
self.ui.cB_JavaVm.addItem("Keine Java VMs konfiguriert", -1) self.ui.cB_JavaVm.addItem("Keine Java VMs konfiguriert", -1)
# Saxon Jar ComboBox # Saxon Jar ComboBox
self.ui.cB_SaxonJar.clear() self.ui.cB_SaxonJar.clear()
for saxon_jar in app_settings.saxon_jars: for saxon_jar in app_settings.saxon_jars:
display_text = f"Saxon {saxon_jar.version}" self.ui.cB_SaxonJar.addItem(saxon_jar.version, saxon_jar.id)
self.ui.cB_SaxonJar.addItem(display_text, saxon_jar.id)
if not app_settings.saxon_jars: if not app_settings.saxon_jars:
self.ui.cB_SaxonJar.addItem("Keine Saxon JARs konfiguriert", -1) self.ui.cB_SaxonJar.addItem("Keine Saxon JARs konfiguriert", -1)
# Apache FOP ComboBox # Apache FOP ComboBox
self.ui.cB_ApacheFop.clear() self.ui.cB_ApacheFop.clear()
for apache_fop in app_settings.apache_fops: for apache_fop in app_settings.apache_fops:
display_text = f"Apache FOP {apache_fop.version}" self.ui.cB_ApacheFop.addItem(apache_fop.version, apache_fop.id)
self.ui.cB_ApacheFop.addItem(display_text, apache_fop.id)
if not app_settings.apache_fops: if not app_settings.apache_fops:
self.ui.cB_ApacheFop.addItem("Keine Apache FOP-Instanzen konfiguriert", -1) self.ui.cB_ApacheFop.addItem("Keine Apache FOP-Instanzen konfiguriert", -1)
# diff-pdf ComboBox # diff-pdf ComboBox
self.ui.comboBox.clear() self.ui.cB_Diff_Pdf.clear()
for diff_pdf in app_settings.diff_pdfs: for postgres_db in app_settings.diff_pdfs:
display_text = f"diff-pdf {diff_pdf.version}" self.ui.cB_Diff_Pdf.addItem(postgres_db.version, postgres_db.id)
self.ui.comboBox.addItem(display_text, diff_pdf.id)
if not app_settings.diff_pdfs: 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): def _load_project_data(self):
"""Lädt bestehende Projektdaten in die Eingabefelder.""" """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']) self._select_combo_by_data(self.ui.cB_ApacheFop, self.project_data['apache_fop_id'])
if 'diff_pdf_id' in self.project_data: 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): def _select_combo_by_data(self, combo_box, data_value):
""" """
@@ -219,6 +225,7 @@ class PdfProjectDlg(QDialog):
) )
return return
# Alle Validierungen bestanden # Alle Validierungen bestanden
self.accept() self.accept()
@@ -236,7 +243,8 @@ class PdfProjectDlg(QDialog):
'java_vm_id': self.ui.cB_JavaVm.currentData(), 'java_vm_id': self.ui.cB_JavaVm.currentData(),
'saxon_jar_id': self.ui.cB_SaxonJar.currentData(), 'saxon_jar_id': self.ui.cB_SaxonJar.currentData(),
'apache_fop_id': self.ui.cB_ApacheFop.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): def _configure_edit_mode(self):
+12 -2
View File
@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>608</width> <width>608</width>
<height>269</height> <height>299</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -116,7 +116,17 @@
</widget> </widget>
</item> </item>
<item row="6" column="1"> <item row="6" column="1">
<widget class="QComboBox" name="comboBox"/> <widget class="QComboBox" name="cB_Diff_Pdf"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Postgres:</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QComboBox" name="cB_Postgres"/>
</item> </item>
</layout> </layout>
</widget> </widget>
+15 -4
View File
@@ -24,7 +24,7 @@ class Ui_projectDlg(object):
def setupUi(self, projectDlg): def setupUi(self, projectDlg):
if not projectDlg.objectName(): if not projectDlg.objectName():
projectDlg.setObjectName(u"projectDlg") projectDlg.setObjectName(u"projectDlg")
projectDlg.resize(608, 269) projectDlg.resize(608, 299)
self.verticalLayout = QVBoxLayout(projectDlg) self.verticalLayout = QVBoxLayout(projectDlg)
self.verticalLayout.setObjectName(u"verticalLayout") self.verticalLayout.setObjectName(u"verticalLayout")
self.widget = QWidget(projectDlg) self.widget = QWidget(projectDlg)
@@ -111,10 +111,20 @@ class Ui_projectDlg(object):
self.formLayout.setWidget(6, QFormLayout.ItemRole.LabelRole, self.label_7) self.formLayout.setWidget(6, QFormLayout.ItemRole.LabelRole, self.label_7)
self.comboBox = QComboBox(self.widget) self.cB_Diff_Pdf = QComboBox(self.widget)
self.comboBox.setObjectName(u"comboBox") 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) 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_5.setText(QCoreApplication.translate("projectDlg", u"Saxon Jar:", None))
self.label_6.setText(QCoreApplication.translate("projectDlg", u"Apache FOP:", 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_7.setText(QCoreApplication.translate("projectDlg", u"diff-pdf:", None))
self.label_8.setText(QCoreApplication.translate("projectDlg", u"Postgres:", None))
# retranslateUi # retranslateUi