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

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_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.