From cebda0838bfafecbedd069a7d84342246355d7ad Mon Sep 17 00:00:00 2001 From: Matthias Nagel Date: Thu, 2 Oct 2025 12:55:15 +0200 Subject: [PATCH] docs: Erstellung des Projekt-Logbuchs --- docs/logbuch.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 docs/logbuch.md diff --git a/docs/logbuch.md b/docs/logbuch.md new file mode 100644 index 0000000..acedb02 --- /dev/null +++ b/docs/logbuch.md @@ -0,0 +1,71 @@ +# 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.