5.6 KiB
5.6 KiB
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_organisatorinitialisiert. - Virtuelle Umgebung: Eine virtuelle Python-Umgebung wurde im Verzeichnis
venverstellt, um die Projektabhängigkeiten zu isolieren. - Django-Installation: Django und
mysqlclientwurden als Abhängigkeiten installiert. - Django-Projekt: Ein neues Django-Projekt namens
baseball_organisatorwurde erstellt. - Django-Apps: Die grundlegenden Apps
accounts,clubs,calendarsunddashboardwurden erstellt. - URL-Konfiguration: Die URLs der neuen Apps wurden in der Haupt-
urls.pydes Projekts registriert. - Datenbank: Die Datenbank wurde für die Entwicklung auf
sqlite3konfiguriert. - 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 deraccounts-App erstellt, das vonAbstractUsererbt. Es wurden Felder fürbirth_dateundplayer_numberhinzugefü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.YYYYangepasst.
Phase 3: Organisationsstruktur
Ziel: Erstellung der Modelle für Clubs, Mannschaften und Teams.
- Club- und Team-Modelle: Die Modelle
ClubundTeamwurden in derclubs-App erstellt. - Beziehungen: Beziehungen zwischen
User,ClubundTeamwurden 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 ModelleTrainingundGameerben (Multi-Table-Inheritance). - Spiel-Logik: Das
Game-Modell wurde um Felder wieopponent,meeting_minutes_before_gameundseasonerweitert. EinGameResult-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 eineparents-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.pywurde 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.