# Web-Praktikum
## Termin 3 
- Gruppe A
    - Kai Wansart: 921862
    - Felix Hoster: xxxxxx
- 15.12.2016

## Beschreibung der Lösung

### Aufgabe der Anwendung
- Entwickeln und Umsetzen eines Praxisphasenmanagers (PPM).
- Schnittstelle für Firmen, Dozenten und Studenten
- Verwaltung der Daten, zB. Benutzerverwaltung und Angebotverwaltung

### Übersicht der fachlichen Funktionen
 - Datenpflege Studenten: 
    - Ausgabe Studenten im System
    - Verwaltung bestehender Datensätze
    - Erstellen neuer Datensätze
 - Datenpflege Lehrende:
    - Ausgabe Lehrenden im System
    - Verwaltung bestehender Datensätze
    - Erstellen neuer Datensätze
 - Datenpflege Firmenverzeichnis:
    - Ausgabe Firmen im System
    - Verwaltung bestehender Datensätze
    - Erstellen neuer Datensätze
 - Datenpflege Praxisphase:
    - Ausgabe Angebote Praxiphasenplätze im System
    - Verwaltung bestehender Datensätze
    - Erstellen neuer Datensätze
 - Auswahl Praxisphasen:
    - Schnittstelle für Studenten, um sich in Praxisphasenplatz einzuschreiben, mit Angabe von Zeitraum
 - Auswertung Firma:
    - Ausgabe aller Firmen mit den jeweiligen Studenten, die sich bei Ihnen zu einem Praxisphasenplatz eingeschrieben haben
 - Auswertung Praxisphasen nach Studenten: 
    - Ausgabe aller Studenten mit Informationen, bei welcher Firma sie wann ihre Praxisphase machen / gemacht haben
 - Auswertung Praxisphase nach Betreuern:
    - Ausgabe aller Betreuer mit den jeweiligen Studenten, die sie betreuen.

## Beschreibung des Client
- Basis: Html Vorlage
- Dynamischer Inhalt via Javascript:
    - Lädt Inhalte im JSON Format von Server
    - Rendert Inhalte in Templates
    - Fügt gerenderte Inhalte in HTML (DOM) ein

## Beschreibung der Komponenten des Servers
- Server: Object-Dispatching --> Weiterleitung der Anfragen an jeweilige Funktionen
    - category
        - Zweck
            - Alle Kategorien (Studenten, Lehrende, Firmen, Angebote)
            - Rückgabe der Inhalte
            - Verwaltung der Daten
        - Zusammenwirken mit anderen Komponenten
            - Zugriff auf Datenbank um Daten zu verwalten
        - Aufbau
            - GET: Rückgabe
            - POST: Eingabe
            - DELETE: Löschen
        - API
            - GET ( Kategorie, Ansicht, ID)
            - POST ( Kategorie, Daten )
            - DELETE ( Kategorie, ID )
    - choice
        - Zweck
            - Rückgabe der bestehenden Angebote
            - Verwaltung der Daten
                - Annahme mit Datum
        - Zusammenwirken mit anderen Komponenten
            - Zugriff auf Datenbank um Daten zu verwalten
        - Aufbau
            - GET: Rückgabe
            - POST: Eingabe
        - API
            - GET ( Ansicht, ID )
            - POST ( Daten )
    - eval
        - Zweck
            - Auswertung
            - Rückgabe der Auswertungen
        - Zusammenwirken mit anderen Komponenten
            - Zugriff auf Datenbank um Daten zu verwalten
        - Aufbau
            - GET: Rückgabe und Auswertung
        - API
            - GET ( Kategorie )
    - database
        - Zweck
            -Verwaltung
                - auslesen
                - bearbeiten
                - speichern
                - löschen
        - Zusammenwirken mit anderen Komponenten
            - category, choice, eval greifen auf Datenbank zu
    - template
        - Zweck
            - Einlesen aller Templates
            - Rückgabe aller Templates
        - Aufbau
            - GET: Rückgabe aller Templates
        - API
            - GET ()

## Datenablage
- Die Daten werden mittels JSON abgespeichert und ausgelesen
- Die Datensätze sind aufgeteilt in die Unterordner:
    - Angebote
    - Firmen
    - Lehrender
    - Studenten
- Es wird jeweils abgespeichert, welche ID der zuletzt hinzugefügte Eintrag hat, um den nächsten mit inkrementierter ID abspeichern zu können

## Konfiguration
- Python
    - Erweiterungen:
        - JSON
        - CherryPy
- Webbrowser
    - Javascript fähig
