Verbesserung der Konfiguration des Eingabeverzeichnisses

This commit is contained in:
2025-10-13 19:25:31 +02:00
parent 5441b9bd73
commit 985fdcc76d
7 changed files with 83 additions and 51 deletions

2
.gitignore vendored
View File

@@ -4,7 +4,7 @@ __pycache__/
*.py[cod] *.py[cod]
*$py.class *$py.class
mylehrerpdf.ini config.ini
# C extensions # C extensions
*.so *.so

View File

@@ -1,23 +0,0 @@
# Basiskonfiguration
Die Basiskonfiguration ist in der Datei ``lehrerpdf.ini`` zu finden, die im gleichenVerzeichnis wie das Python-Skript ``lehrerpdf.py`` liegt (vgl. Verzeichnis [src/](../src/)).
Aktuell wird in der Basiskonfiguration nur das Verzeichnis der Eingabedateien des Benutzers festgelegt. Als Standard ist das Unterverzeichnis ``data/`` eingetragen:
```
[Allgemein]
# Pfad (relativ oder absolut zu den Eingabedateien)
pfad = data/
```
Da im Unterverzeichnis ``data/`` (fiktive) Beispieldateien abgelegt sind, die als Ausgangspunkt zum Experimentieren mit dem Tool sicherlich hilfreich sind, empfiehlt es sich nicht die eigenen Dateien in diesem Verzeichnis abzulegen. Stattdessen sollten die Dateien separat abgelegt werden und das zugehörige Verzeichnis in der Basiskonfiguration angepasst werden.
Da ein Update des Tools eine Veränderung der Datei ``lehrerpdf.ini`` wieder überschreiben würde, wird folgende Vorgehensweise empfohlen: Legen Sie im gleichen Verzeichnis die Datei ``mylehrerpdf.ini`` an und passen Sie dort das Eingabeverzeichnis an. Die Datei ``mylehrerpdf.ini`` wird der Datei ``lehrerpdf.ini`` gegenüber durch das Skript bevorzugt.
Sie können wahlweise einen relativen Pfad oder einen absoluten Pfad angeben. Bitte beachten Sie, dass unter Windows die Backslashs \ zum Trennen der Verzeichnisse jeweils doppelt angegeben werden müssen:
```
/Users/username/Desktop/MeineDaten
c:\\Dokumente\\Desktop\\MeineDaten
```

19
doc/config.md Normal file
View File

@@ -0,0 +1,19 @@
# Konfiguration des Eingabeverzeichnisses (config.ini)
Im Verzeichnis des Skripts finden Sie die Datei ``config.dist`` (vgl. Verzeichnis [src/](../src/)). Sie stellt ein Beispiel dar und dient als Ausgangspunkt für das Anlegen der Datei ``config.ini``.
```
[Allgemein]
# Pfad (relativ oder absolut zu den Eingabedateien)
pfad = /Users/wolfgang/Documents/daten/
```
Legen Sie eine Kopie der Datei ``config.dist`` unter dem Namen ``config.ini`` an und ändern Sie den Pfad. Das angegebenen Eingabeverzeichnis wird fortan als Eingabe berücksichtigt.
Sie können wahlweise einen relativen Pfad oder einen absoluten Pfad angeben. Bitte beachten Sie, dass unter Windows die Backslashs \ zum Trennen der Verzeichnisse jeweils doppelt angegeben werden müssen:
```
/Users/username/Desktop/MeineDaten
c:\\Dokumente\\Desktop\\MeineDaten
```

View File

@@ -3,11 +3,15 @@
Die Konfiguration gliedert sich in zwei Teile. Die Konfiguration gliedert sich in zwei Teile.
### 1. Basiskonfiguration ### 1. Konfiguration des Eingabeverzeichnisses
Die Eingabe des Python-Skripts besteht aus mehreren Dateien, die im nachfolgenden Abschnitt genauer beschrieben werden. Der Pfad zu diesen Eingabedateien wird in der Basiskonfiguration festgelegt. Das Python-Skript verarbeitet mehrere Dateien (vgl. nächster Abschnitt), die in einem gemeinsamen Verzeichnis enthalten sein müssen. Um den Pfad des Verzeichnisses festzulegen gibt es zwei Möglichkeiten:
- [Basiskonfiguration](basiskonfiguration.md) (Datei ``lehrerpdf.ini``) - Beim Aufruf des Skripts auf der Kommandozeile (vgl. Abschnitt [Erzeugung des Zieldokuments](erzeugung.md)) wird das Verzeichnis als Option angegeben.
- Im Verzeichnis des Skrips wird eine Datei [config.ini](config.md) hinterlegt, die den Pfad enthält.
Trifft keine der beiden Möglichkeiten zu, wird das im Skript-Verzeichnis enthaltene Unterverzeichnis ``data/`` als Eingabe verwendet. Dieses Verzeichnis enthält (fiktive) Beispieldateien, die als Ausgangspunkt zum Experimentieren mit dem Tool gedacht sind.
### 2. Konfiguration der PDF-Ausgabe ### 2. Konfiguration der PDF-Ausgabe

View File

@@ -1,4 +1,4 @@
[Allgemein] [Allgemein]
# Pfad (relativ oder absolut zu den Eingabedateien) # Pfad (relativ oder absolut zu den Eingabedateien)
pfad = data/ pfad = /Users/wolfgang/Documents/daten/

View File

@@ -2097,7 +2097,7 @@ endobj
endobj endobj
357 0 obj 357 0 obj
<< <<
/Author () /CreationDate (D:20251012163216+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251012163216+02'00') /Producer (xhtml2pdf <https://github.com/xhtml2pdf/xhtml2pdf/>) /Author () /CreationDate (D:20251013151454+02'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20251013151454+02'00') /Producer (xhtml2pdf <https://github.com/xhtml2pdf/xhtml2pdf/>)
/Subject () /Title () /Trapped /False /Subject () /Title () /Trapped /False
>> >>
endobj endobj
@@ -2984,7 +2984,7 @@ xref
trailer trailer
<< <<
/ID /ID
[<5a8bd7cb940f8f8099579e9bd8769a19><5a8bd7cb940f8f8099579e9bd8769a19>] [<758ef2327eee35bb2dae1e505bb7cc86><758ef2327eee35bb2dae1e505bb7cc86>]
% ReportLab generated PDF document -- digest (http://www.reportlab.com) % ReportLab generated PDF document -- digest (http://www.reportlab.com)
/Info 357 0 R /Info 357 0 R

View File

@@ -10,15 +10,33 @@ sys.path.append(os.path.abspath("./pages"))
import start, halbjahr, birthday, uebersicht, korrektur, somi, ha, checkliste import start, halbjahr, birthday, uebersicht, korrektur, somi, ha, checkliste
# 1. Eingabepfad einlesen aus lehrerpdf.ini oder bevorzugt: mylehrerpdf.ini # 1. Eingabeverzeichnis bestimmen
base_file = "mylehrerpdf.ini" # - Option 1: Argument -d auf Kommandozeile
if (not(os.path.exists(base_file))): # - Option 2: Datei config.ini im aktuellen Verzeichnis
base_file = "lehrerpdf.ini" # - Default : lokales Demo-Verzeichnis data/ mit fiktiven Daten
parser = argparse.ArgumentParser()
parser.add_argument('-d', dest='dir', required=False)
args = parser.parse_args()
path = args.dir
if (not(path)):
base_file = "config.ini"
if (not(os.path.exists(base_file))): if (not(os.path.exists(base_file))):
print(base_file+" nicht vorhanden!")
print("Kein Verzeichnis angegeben, verwende das Demo-Verzeichnis mit fiktiven Daten.")
path = "data/"
if (not(os.path.exists(path))):
print("Basisverzeichnis "+path+" nicht vorhanden!")
exit(0) exit(0)
else:
base = ConfigParser(allow_no_value=True) base = ConfigParser(allow_no_value=True)
base.read(base_file) base.read(base_file)
@@ -27,10 +45,24 @@ try:
except KeyError: except KeyError:
print('Der Schlüssel Allgemein oder "pfad" existiert nicht in der Config-Datei!') print('Der Schlüssel Allgemein oder "pfad" existiert nicht in der Config-Datei!')
exit(0) exit(0)
print("Verwende Verzeichnis aus config.ini.")
if (not(os.path.exists(path))): if (not(os.path.exists(path))):
print("Basisverzeichnis "+path+" nicht vorhanden!") print("Basisverzeichnis "+path+" nicht vorhanden!")
exit(0) exit(0)
else:
print("Verwende Verzeichnis aus Kommandozeilenoption -d")
if (not(os.path.exists(path))):
print("Basisverzeichnis "+path+" nicht vorhanden!")
exit(0)
if (not(path.endswith("/"))):
path = path + "/"
print("Verarbeite das Verzeichnis: "+path) print("Verarbeite das Verzeichnis: "+path)
@@ -132,7 +164,7 @@ body = body + start.erstelleStartseite(lerngruppen, path, config, inputs)
# Verarbeite nacheinander alle Eingabedateien = Lerngruppen # Verarbeite nacheinander alle Eingabedateien = Lerngruppen
for datei in dateien: for datei in dateien:
print("Verarbeite Datei: "+datei) print(" - Verarbeite Datei: "+datei)
if (not(os.path.exists(datei))): if (not(os.path.exists(datei))):
print("Datei "+datei+" nicht vorhanden!") print("Datei "+datei+" nicht vorhanden!")