# Dokumentation: Praktikum 2

## Allgemeine Beschreibung der Lösung

Das Praktikum 2 ist in Python geschrieben und nutzt das Framework CherryPy, mit welchem eine Website zur Verwendung erzeugt wird.

Dieser Server läuft mit einer Datenbank, welche Informationen via des Python-Moduls json in Dateien abspeichern und auslesen kann.

Die Website wird durch ein Template erzeugt, welches durch die Template-Engine mako umgesetzt wird, wodurch Daten aus der Datenbank ausgeben werden können.

## Beschreibung der Komponenten

### Zweck

Die Website stellt den Inhalt einer Absolventenfeier dar. Es besteht die Möglichkeit sich für diese anzumelden, mit der Option sich auch wieder abzumelden. Dieser Prozess wird durch ein Passwort geschützt, welches der Benutzer selber wählen kann. Die Daten die eingeben wurden, können jederzeit geändert werden, es muss jedoch das Passwort eingeben werden.

### Aufbau

server.py

Die server.py hat die Aufgabe die Website bereitzustellen und nutzt hierfür das CherryPy-Framework, sowie die folgenden Module.

application.py

Die application.py leitet Anfragen, die durch die Website, welche durch das CherryPy-Framework erzeugt wurde, an die anderen Module weiter.

datenbank.py

Die datenbank.py stellt den Speicher des Systems dar. Sie dient als Schnittstelle, um Daten abzuspeichern, verändern, oder zu löschen.

anzeigen.py

Die anzeigen.py generiert die Templates, welche benötigt werden, um die Informationen auf der Website anzuzeigen. Um dies zu ermöglichen wird die mako-Engine verwendet.

### Zusammenwirken der Komponenten

Durch die server.py werden die Anfragen durch das CherryPy-Framework erkannt und weitergeleitet an die application.py Die application.py verarbeitet die Anfragen und gibt Anweisungen an die datenbank.py und anzeigen.py was mit diesen geschehen soll. Im folgenden werden diese Anweisungen dann von der datenbank.py und anzeigen.py ausgeführt.

### Datenablage

Die Daten, die von der datenbank.py verarbeitet werden, liegen in dem Verzeichnis "/data/" und liegen im ".json" Format vor. Als Dateiname wird die jeweilige ID (abhängig von der Reihenfolge der Anmeldung) des Benutzers mit der Endung ".json" verwendet. In der "letztes.json" wird immer die zuletzt verwendete ID gespeichert, damit das System weiß, bis zu welcher ID Daten vorliegen.

### API

index

Stellt die Startseite der Absolventenfeier dar. Diese enthält eine Tabelle mit Anmeldungen und bietet die Möglichkeit diese zu bearbeiten.

ausschuss_app

Zeigt dem Prüfungsausschuss eine sortierte Liste mit Anmeldungen und bietet die Möglichkeit ein Abschlussthema zu bearbeiten.

hinzufuegen_app

Zugriff auf die Bearbeiten-Funktion, jedoch ohne einlesen vorhandener Daten. Wird genutzt um einen neuen Eintrag zu erstellen.

passwort_app

Passwort-Abfrage für die übergebene ID.

passwort_loeschen_app

Passwort-Abfrage zum Löschen der übergebenen ID.

bearbeiten_app

Möglichkeit Einträge in inhalt_alle zu verändern.

bearbeiten_ausschuss_app

Möglichkeit Abschlussarbeit in inhalt_alle hinzuzufügen, oder zu ändern.

speichern_app

Speichert übergebene Einträge in inhalt_alle. Danach wird Inhalt in .json gespeichert.

speichern_ausschuss_app

Speichert übergebenen Eintrag Abschlussarbeit in inhalt_alle. Danach wird Inhalt in .json gespeichert.

loeschen_app

Löscht übergebene ID, sofern das übergebene Passwort, mit dem in inhalt_alle gespeicherten.

fehler_app

Lässt Fehlermeldungen ausgeben.