diff --git a/README.md b/README.md index 1a9d4f3..9b7a960 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,12 @@ # schild2halbjahr + ## Über das Projekt -Das vorliegende Python Projekt liest u.a. zwei Exportdateien der Schulverwaltungssoftware SchildNRW ein und erzeugt daraus zum einen HTML-Folien mit Schülerleistungsdaten zur Präsentation auf Halbjahreskonferenzen und zum anderen PDF-Dokumente mit Übersichten der Leistungsdaten zum Ausdrucken. +Das vorliegende Python-Projekt liest u.a. zwei Exportdateien der Schulverwaltungssoftware SchildNRW ein und erzeugt daraus zum einen HTML-Folien mit Schülerleistungsdaten zur Präsentation auf Halbjahreskonferenzen und zum anderen PDF-Dokumente mit Übersichten der Leistungsdaten zum Ausdrucken. -## beispielinput + +## Beispieldaten Für eine fiktive Beispielschule mit nur einer Klasse mit drei Schülern habe ich fiktive Leistungsdaten angelegt. @@ -13,17 +15,26 @@ Hier eine Übersicht der Eingabedateien in Ordner [./beispielinput](./beispielin - [SchuelerLeistungsdaten.dat](./beispielinput/SchuelerLeistungsdaten.dat) - [SchuelerLernabschnittsdaten.dat](./beispielinput/SchuelerLernabschnittsdaten.dat) - [epoche.csv](./beispielinput/epoche.csv) - - [config.ini](./beispielinput/config.ini) - Entsprechend hier die Ausgabedateien: +und der Konfigurationsdatei im gleichen Ordner: - a) HTML-Folien im Ordner [./output/html](./output/html) + - [config.ini](./beispielinput/config.ini) + +Entsprechend hier die Ausgabedateien: + +a) HTML-Folien im Ordner [./output/html](./output/html) - [folien.html](./output/html/folien.html) - b) PDF-Dokumente im Ordner [./output/pdf](./output/pdf) +b) PDF-Dokumente im Ordner [./output/pdf](./output/pdf) - [ausdruck-farbe.pdf](./output/pdf/ausdruck-farbe.pdf) - [ausdruck-sw.pdf](./output/pdf/ausdruck-sw.pdf) - [uebersichten.pdf](./output/pdf/uebersichten.pdf) + +## Beschreibung der Vorgehensweise + +1. [Erzeugen der Eingabedateien](./doc/dateien.md) +2. [Konfiguration der Verarbeitung](./doc/konfiguration.md) +3. [Anstoßen der Verarbeitung](./doc/verarbeitung.md) diff --git a/doc/dateien.md b/doc/dateien.md new file mode 100644 index 0000000..9a9d1b4 --- /dev/null +++ b/doc/dateien.md @@ -0,0 +1,38 @@ +# Erzeugen der Dateien + + +## Export aus Schild + +Rufen Sie SchildNRW auf und rufen Sie den Export „Schnittstelle Schild-NRW“ auf. + +Wählen Sie unter "zu exportierende Daten" lediglich die beiden Optionen "Schüler: Leistungsdaten" und "Schüler: Lernabschnittsdaten". + +Setzen Sie unter den Optionen den Haken bei "nur sichtbare Einträge exportieren" und "Klasse als zusätzliches Identifikationsmerkmal hinzufügen". Lassen Sie die Option "nur aktuellen Abschnitt exportieren" jedoch unberücksichtigt. + +Wählen Sie nun zumindest das aktuelle Schuljahr aus. + +Wählen Sie weitere ein bis zwei Vorgängerschuljahre aus, wenn + +- es in Ihrer Datenbank eine/n SchülerIn gibt, der/die im Vorgängerschuljahr eine Wiederholung zum Halbjahr begonnen hat (=> insgesamt zwei Schuljahre exportieren), + +- es an Ihrer Schule einen Abiturabschlussjahrgang (Q2 bzw. 13) gibt (=> insgesamt zwei Schuljahre exportieren), + +- in diesem Jahrgang ein/e SchülerIn ein Schuljahr wiederholt hat (=> insgesamt drei Schuljahre exportieren). + +Starten Sie den Export. Die dabei erzeugten Dateien 'SchuelerLeistungsdaten.dat' und 'SchuelerLernabschnittsdaten.dat' werden später benötigt. + + +## Epochenunterricht + +Bei oben beschriebenen Schild Export werden leide Fächer nicht gekennzeichnet, die nur im ersten Halbjahr unterrichtet und deren Note automatisch ins zweite Halbjahr übertragen wird (Epochenuterricht). + +Um die Fächer dennoch auf den Konferenzfolien zu kennzeichnen, können sie in einer Datei 'epoche.csv' aufgelistet werden. Die Angabe dieser Datei ist optional. + +Hier eine selbsterklärende Beispieldatei in den Beispieldaten (vgl. Datei [epoche.csv](../beispielinput/epoche.csv)): + +''' +Klasse|Fächer +09A|GE +''' + +Listen Sie hier zeilenweise aller Klassen und die zugehörige Fachbezeichnung mit Epochenunterricht auf. Hat eine Klasse mehrere Fächer in Epochenunterricht, so listen Sie alle Fächer in einer Zeile durch Komma getrennt auf. \ No newline at end of file diff --git a/doc/konfiguration.md b/doc/konfiguration.md new file mode 100644 index 0000000..88d2d9a --- /dev/null +++ b/doc/konfiguration.md @@ -0,0 +1,26 @@ +# Konfiguration der Verarbeitung + +Für die Verarbeitung stehen Ihnen einige Parameter zur Verfügung, die in der Datei 'config.ini' festgelegt werden. + +Sie finden hier ein selbsterklärendes Beispiel (vgl. Datei [config.ini](../beispielinput/config.ini)): + +''' +[Allgemein] +schuljahr = 2025 +halbjahr = 2 + +[Jahrgänge] +jahrgänge_oberstufe = EF,Q1,Q2 +jahrgang_einführung = EF +jahrgang_abitur = Q2 +als_eine_Klasse = EF +ignoriere_Jahrgänge = +''' + +Im allgemeinen oberen Teil werden Schuljahr (z.B. 2025 für 2025/2026) und Halbjahr (1 oder 2) eingestellt. + +Im unteren Teil werden die Jahrgänge bezeichnet, die zur Oberstufe gehören, die die Einführungsphase und das letzte Jahr der Qualifikationsphase bilden. Haben Sie keine Oberstufe, können Sie die Angaben einfach so belassen. (Bitte nicht löschen, das führt zu Fehlermeldungen!). + +Haben Sie einen Jahrgang (oftmals EF), in der zwar Klassen gebildet werden (EFa usw.), auf der Konferenz aber der Jahrgang nicht klassenweise gezeigt werden soll, können Sie dies bei 'als_eine_Klasse' festlegen. + +Sollen Jahrgänge ignoriert werden, listen Sie diese durch Komma getrennt unter 'ignoriere_Jahrgänge' auf. diff --git a/doc/verarbeitung.md b/doc/verarbeitung.md new file mode 100644 index 0000000..cc1685c --- /dev/null +++ b/doc/verarbeitung.md @@ -0,0 +1,45 @@ +# Anstoßen der Verarbeitung + + +## a) Zusammenstellen des Eingabeverzeichnisses + +Das Pythonskript sucht im Ordner 'schild2halbjahr' nach einem Verzeichnis 'input/'. Ist dies nicht vorhanden, wird das Verzeichnis 'beispielinput/' für die Verarbeitung verwendet. + +Legen Sie also - sofern noch nicht vorhanden - das Unterverzeichnis 'input/' an und fügen Sie die bereits erzeugten bzw. erstellten Dateien 'SchuelerLeistungsdaten.dat', 'SchuelerLernabschnittsdaten.dat', 'epoche.csv' (optional) und 'config.ini' in diesem Verzeichnis ab. + + +## b) Voraussetzungen + +Um das Skript zu starten sind einige Voraussetzungen zu erfüllen: + +1. Auf dem eingesetzten Rechner muss [Python](https://www.python.org) auf der Kommandozeile installiert sein. (Das vorliegende Skript wurde unter Python 3.13 entwickelt und getestet. Es sollte aber auch mit älteren Python Versionen lauffähig sein.) Da Python plattformunabhängig ist, ist auch das vorliegende Projekt plattformunabhängig. + +2. Das Python-Modul ``xhtml2pdf`` muss installiert sein. + +```python +pip3 install xhtml2pdf +``` + + +## c) Starten des Skripts + +Nun kann das Skript auf der Kommandozeile gestartet werden. Dazu muss es aus dem Skriptverzeichnis heraus gestartet werden. + +``` +python3 konferenz.py +``` + +Auf der Konsole werden die Verarbeitungsschritte dokumentiert und auch evtl. Fehler bei der Verarbeitung angezeigt: + +``` +Eingabeverzeichnis input/ existiert nicht, verarbeite beispielinput/ ... +Lese die Daten ein... +Erzeuge HTML-Folien... +Erzeuge PDF-Ausdruck in Farbe... +Erzeuge PDF-Ausdruck in SW... +Erzeuge PDF-Notenübersichten für die SI... +Fertig! +``` + +Die Ausgabedateien werden in den Ordnern 'output/html/' und '/output/pdf/' erzeugt bzw. aktualisiert. + diff --git a/output/html/folien.html b/output/html/folien.html index 518f20f..ab37ed3 100644 --- a/output/html/folien.html +++ b/output/html/folien.html @@ -21,7 +21,7 @@
-