2025-10-02 12:55:15 +02:00

72 lines
5.6 KiB
Markdown

# Logbuch: Baseball Organisator
Dieses Logbuch dient dazu, den Entwicklungsfortschritt und die getroffenen Entscheidungen während der Erstellung der "Baseball Organisator"-App festzuhalten.
## Phase 1: Projektvorbereitung und Basiskonfiguration
**Ziel:** Schaffung einer sauberen Arbeitsumgebung und Initialisierung des Django-Projekts.
- **Projektverzeichnis:** Das Projekt wurde im Verzeichnis `baseball_organisator` initialisiert.
- **Virtuelle Umgebung:** Eine virtuelle Python-Umgebung wurde im Verzeichnis `venv` erstellt, um die Projektabhängigkeiten zu isolieren.
- **Django-Installation:** Django und `mysqlclient` wurden als Abhängigkeiten installiert.
- **Django-Projekt:** Ein neues Django-Projekt namens `baseball_organisator` wurde erstellt.
- **Django-Apps:** Die grundlegenden Apps `accounts`, `clubs`, `calendars` und `dashboard` wurden erstellt.
- **URL-Konfiguration:** Die URLs der neuen Apps wurden in der Haupt-`urls.py` des Projekts registriert.
- **Datenbank:** Die Datenbank wurde für die Entwicklung auf `sqlite3` konfiguriert.
- **Git-Initialisierung:** Ein Git-Repository wurde initialisiert und der initiale Stand des Projekts wurde committed.
## Phase 2: Benutzer- und Rollenmodell
**Ziel:** Erstellung der Benutzerprofile und Definition der verschiedenen Rollen.
- **Benutzerdefiniertes User-Modell:** Ein `CustomUser`-Modell wurde in der `accounts`-App erstellt, das von `AbstractUser` erbt. Es wurden Felder für `birth_date` und `player_number` hinzugefügt.
- **Einladungscode-Modell:** Ein `InvitationCode`-Modell wurde erstellt, um die Registrierung neuer Benutzer über Einladungscodes zu steuern.
- **Registrierungslogik:** Die Logik für die Registrierung mittels Einladungscode wurde implementiert, einschließlich der entsprechenden Formulare, Ansichten und Vorlagen.
- **Datumsformat:** Das Format für das Geburtsdatumsfeld wurde auf `dd.mm.YYYY` angepasst.
## Phase 3: Organisationsstruktur
**Ziel:** Erstellung der Modelle für Clubs, Mannschaften und Teams.
- **Club- und Team-Modelle:** Die Modelle `Club` und `Team` wurden in der `clubs`-App erstellt.
- **Beziehungen:** Beziehungen zwischen `User`, `Club` und `Team` wurden definiert, um Administratoren, Trainer und Spieler zuzuordnen.
- **Admin-Interface:** Die neuen Modelle wurden im Django-Admin-Bereich registriert, um die Verwaltung zu erleichtern.
- **Profilbearbeitung:** Eine Ansicht zum Bearbeiten des eigenen Benutzerprofils wurde hinzugefügt.
## Phase 4: Terminverwaltung und Google Maps API
**Ziel:** Implementierung der Kalenderfunktionalität.
- **Termin-Modelle:** Ein Basis-`Event`-Modell wurde erstellt, von dem die Modelle `Training` und `Game` erben (Multi-Table-Inheritance).
- **Spiel-Logik:** Das `Game`-Modell wurde um Felder wie `opponent`, `meeting_minutes_before_game` und `season` erweitert. Ein `GameResult`-Modell wurde zur Speicherung von Ergebnissen erstellt.
- **Google Maps Integration:** Eine einfache Logik zur Erstellung von Google Maps-Links aus Adressen wurde implementiert.
- **Dashboard-Ansicht:** Die Dashboard-Ansicht wurde entwickelt, um Termine basierend auf der Benutzerrolle anzuzeigen.
- **Zugriffsrechte für Trainer:** Ansichten zum Erstellen, Bearbeiten und Löschen von Terminen wurden für Trainer implementiert.
## Phase 5: Fortgeschrittene Funktionen und Backend
**Ziel:** Implementierung komplexerer Features.
- **Spielererstellung durch Headcoaches:** Ein Workflow wurde implementiert, der es Headcoaches ermöglicht, neue Spieler anzulegen und Einladungscodes für sie und ihre Eltern zu generieren.
- **Abwesenheitsfunktion:** Ein `AbsencePeriod`-Modell wurde erstellt. Eine Signal-basierte Logik sorgt dafür, dass die Teilnahme an Terminen während dieser Periode automatisch auf "abgelehnt" gesetzt wird.
- **Admin-Zugriffsbeschränkung:** Der Zugriff auf den Django-Admin-Bereich wurde auf Superuser und Club-Admins beschränkt.
- **Eltern-Kind-Beziehung:** Das `CustomUser`-Modell wurde um eine `parents`-Beziehung erweitert, um Eltern mit ihren Kindern zu verknüpfen.
## Phase 6: Frontend und finale Anpassungen
**Ziel:** Optimierung des Layouts und der Leistung.
- **Bootstrap-Integration:** Das Frontend wurde mit dem Bootstrap-Framework neu gestaltet, um ein modernes und responsives Layout zu gewährleisten.
- **Statische Dateien:** Die Verwaltung von statischen Dateien (CSS, JS) wurde konfiguriert.
- **Performance-Optimierung:** Der Signal-Handler für Abwesenheitsperioden wurde optimiert, um die Anzahl der Datenbankabfragen zu reduzieren.
- **MySQL-Vorbereitung:** Die `settings.py` wurde um eine auskommentierte MySQL-Konfiguration für die spätere Bereitstellung erweitert.
## Zusätzliche Anpassungen
- **Eltern-Funktionalität:** Eltern können jetzt auf dem Dashboard die Termine ihrer Kinder sehen und für diese zu- oder absagen.
- **Anzeige der Spieler-Teilnahme:** Trainer sehen auf dem Dashboard, welche Spieler für einen Termin zu- oder abgesagt haben. Die Namen werden farblich markiert.
- **"Spiel öffnen"-Funktionalität:** Headcoaches können Spiele, bei denen nicht genügend Spieler zugesagt haben, für andere Teams des Clubs öffnen. Diese "Unterstützer-Spiele" werden auf dem Dashboard entsprechend hervorgehoben.
- **Verbesserte Benutzersuche:** Bei der Erstellung eines Spielers wurde die Auswahl von Elternteilen durch ein Autocomplete-Suchfeld verbessert.
- **Lokalisierung:** Das Datumsformat auf dem Dashboard wurde auf das deutsche Format umgestellt.
- **Fehlerbehebungen:** Diverse Fehler im Zusammenhang mit Importen, Template-Syntax und Datenbank-Inkonsistenzen wurden behoben.