Fügt einen umfassenden Verifizierungsprozess für neu erstellte Spieler
und zugeordnete Eltern hinzu. Dies ersetzt das frühere Einladungscode-System.
Wesentliche Änderungen:
- **`CustomUser` Modell:** Erweitert um `is_verified` (Standard `False`) und
`verification_code` (UUID) Felder. `is_active` ist nun standardmäßig `False`
bis zur Verifizierung. Das `InvitationCode`-Modell wurde entfernt.
- **E-Mail-Utility (`accounts/utils.py`):** Eine neue Funktion `send_verification_email`
sendet oder simuliert E-Mails (basierend auf `settings.MTP_EMAIL_SEND`).
Simulierte E-Mails werden im `.mbox`-Format in `tmp_mails/` gespeichert.
- **`settings.py`:** `DEFAULT_FROM_EMAIL` wurde hinzugefügt.
- **`PlayerCreateView` (`accounts/views.py`):**
- Generiert `verification_code` für neue Spieler und Eltern.
- Setzt das Passwort für neue Benutzer auf unbrauchbar (`set_unusable_password`).
- Löst den Versand von Verifizierungs-E-Mails aus.
- **`verify_account` View (`accounts/views.py`):**
- Eine neue View, die über einen Link in der E-Mail aufgerufen wird.
- Ermöglicht Spielern, ein Passwort festzulegen.
- Ermöglicht Eltern, einen eindeutigen Benutzernamen und ein Passwort festzulegen.
- Setzt `is_active` und `is_verified` auf `True` und invalidiert den
Verifizierungscode nach erfolgreicher Einrichtung.
- Loggt den Benutzer nach erfolgreicher Verifizierung direkt ein und zeigt
eine Erfolgsmeldung an.
- Behebt ein Problem bei der Bestimmung von Eltern-Benutzern.
- **Formulare (`accounts/forms.py`):** Neue `PlayerVerificationForm` und
`ParentVerificationForm` für den Verifizierungsprozess.
- **E-Mail-Templates:** Neue Text- und HTML-Templates für Spieler- und
Eltern-Verifizierungs-E-Mails (`accounts/templates/accounts/email/`).
- **Verifizierungs-Template:** Neues Template für die Verifizierungsseite
(`accounts/templates/accounts/verify_account.html`).
- **URLs (`accounts/urls.py`):** Entfernung der alten `invitation_code` und
`register` URLs, Hinzufügung der neuen `verify_account` URL.
- **Datenbankmigrationen:** Migrationen für die Änderungen am `CustomUser`-Modell
erstellt und angewendet.
- **Temporäres Verzeichnis:** `tmp_mails/` Verzeichnis für E-Mail-Simulation erstellt.
Implementiert einen druckbaren Saison-Report für Head Coaches, der eine
Übersicht über die Spielerteilnahme an allen Spielen einer ausgewählten
Saison bietet.
Wesentliche Änderungen:
- **Neue URL und View (`season_report` in `team_stats/views.py`):**
Empfängt `team_id` und `season`, holt Spieler, Spiele und deren
Teilnahmestatus und bereitet die Daten auf. Enthält eine
Berechtigungsprüfung für den Head Coach.
- **Neue Vorlage (`team_stats/templates/team_stats/season_report.html`):**
Zeigt eine Tabelle mit Spielen als Zeilen und Spielern als Spalten an.
Teilnahmestatus wird mit Symbolen (✔, ✖, ?) dargestellt. Enthält
druckspezifisches CSS, um die Lesbarkeit und das Seitenlayout für DIN A4
(Querformat) zu optimieren, inklusive vertikal gedrehter Spielernamen in
der Kopfzeile zur Platzersparnis.
- **Integration (`team_statistics.html`):** Ein "Saison-Report generieren"-Button
wurde zur Team-Statistikseite hinzugefügt, der den Report für die
aktuell ausgewählte Saison öffnet.
Fügt die Funktionalität hinzu, wiederkehrende Trainingsevents zu erstellen,
zu verwalten und zu löschen. Ein Coach kann nun ein Training erstellen,
das sich alle X Tage bis zu einem bestimmten Enddatum wiederholt.
Wesentliche Änderungen:
- **Datenmodell ():** Das -Modell wurde um Felder
für die Wiederholung (, ,
) und zur Gruppierung von Serien ()
erweitert.
- **Formulare ():** Das Formular zur Erstellung von Trainings
wurde um die neuen Wiederholungsoptionen erweitert.
- **Views:**
- : Die Logik wurde erweitert, um beim Speichern
eines wiederkehrenden Events automatisch alle zukünftigen Instanzen
der Serie zu erstellen.
- : Bietet nun die Möglichkeit, entweder nur ein
einzelnes Event einer Serie oder die gesamte Serie zu löschen.
- **Templates:**
- : Enthält jetzt die neuen Formularfelder mit
JavaScript, um die Wiederholungsoptionen dynamisch ein- und
auszublenden.
- : Zeigt eine Auswahlmöglichkeit für den
Löschumfang an, wenn das Event Teil einer Serie ist.
- **Migration:** Eine neue Datenbankmigration wurde erstellt, um die
Änderungen am -Modell anzuwenden.
Stellt sicher, dass die Event-Listen ('Your Events' und 'Children Events')
im Dashboard konsistent chronologisch nach dem sortiert sind.
Obwohl die Datenbankabfragen bereits eine Sortierung enthielten, ging diese
durch die anschließende Verarbeitung in Python-Listen verloren. Die Listen
werden nun nach ihrer Erstellung explizit in Python sortiert.
Änderungen:
- Die -Liste wird nach ihrer Befüllung nach
sortiert.
- Die für jedes Kind wird ebenfalls nach
sortiert, bevor sie dem Kontext hinzugefügt wird.
Behebt zwei Fehler im kürzlich implementierten Abstimmungs-Feature:
1. **Fehler bei Mehrfachauswahl:** Ein logischer Fehler in der -View, der
beim Abstimmen bei Multiple-Choice-Umfragen auftrat, wurde behoben.
Die inkorrekte Verwendung von wurde durch eine
korrekte Iteration ersetzt, die den Benutzer aus den der
einzelnen Auswahlmöglichkeiten entfernt.
2. **Anzahl der Auswahlmöglichkeiten:** Das Formular zur Erstellung von
Umfragen zeigte nur zwei Felder für Auswahlmöglichkeiten an. Dies wurde
korrigiert, sodass nun, wie gefordert, bis zu fünf
Auswahlmöglichkeiten eingegeben werden können.
Änderungen:
- Korrektur der Logik zum Zurücksetzen von Stimmen in für
Mehrfachauswahl-Umfragen.
- Anpassung des in , um die Anzahl der
angezeigten Auswahlfelder auf 5 zu erhöhen.
Fügt ein neues Abstimmungs-Feature hinzu, das es Head Coaches ermöglicht,
Umfragen innerhalb ihres Teams zu erstellen und zu verwalten.
Teammitglieder können Umfragen ansehen und daran teilnehmen.
Wesentliche Änderungen:
- **Neue 'polls'-App:** Enthält Modelle, Formulare, Views und Templates.
- **Modelle und :** Definieren die Struktur für Umfragen
(Frage, Team, Ersteller, Mehrfachauswahl-Option) und die Auswahlmöglichkeiten
(Text, Stimmen).
- **Formulare und :** Für die Erstellung von Umfragen
und deren Auswahlmöglichkeiten.
- **Views:**
- : Zeigt alle für den Benutzer relevanten Umfragen an.
- : Ermöglicht Head Coaches das Erstellen neuer Umfragen
(inkl. Fehlerbehebung bei der Formularinitialisierung).
- : Zeigt Details einer Umfrage an und ermöglicht die
Stimmabgabe.
- : Zeigt die Ergebnisse einer Umfrage an.
- : Funktion für die Stimmabgabe.
- **Templates:** Spezifische Templates für alle Umfrage-Views.
- **URL-Konfiguration:** Neue URLs für die 'polls'-App und Einbindung in die
Haupt-URL-Konfiguration.
- **Navigationslink:** Ein neuer Link 'Polls' in der Hauptnavigation für
authentifizierte Benutzer.
- **Migrationen:** Datenbankmigrationen für die neuen - und -Modelle.
Behebt einen Fehler in der , bei dem beim Bearbeiten
eines Events (Spiel oder Training) das Formular leer angezeigt wurde
anstatt mit den vorhandenen Daten des Events vorbefüllt zu sein.
Die Ursache war eine Inkonsistenz bei der Übergabe der Modellinstanz:
Die erhielt ein übergeordnetes -Objekt, während die
für oder eine spezifische Child-Instanz
erwartete.
Änderungen:
- Überschreibung der Methode in , um die
korrekte untergeordnete Instanz ( oder ) des Events
abzurufen und an das Formular zu übergeben.
- Aktualisierung der Methode in zur
Verwendung von für eine robustere Typüberprüfung des
Objekts.
Erweitert die Team-Statistikansicht um zwei neue Metriken:
- 'Games with Supporters': Zeigt die Anzahl der Spiele an, die mit Unterstützung
durch ein zweites Team (Supporter-Team) stattgefunden haben.
- 'Avg. Supporter Share': Berechnet den durchschnittlichen Prozentsatz der
Spieler, die in diesen Spielen vom Supporter-Team gestellt wurden.
Diese Statistiken helfen, den Grad der Abhängigkeit von externer Spielerunterstützung
zu analysieren. Die Anzeige erfolgt in einer neuen Karte auf der Team-Statistikseite.
Änderungen umfassen:
- Anpassung der Funktion in
zur Berechnung der neuen Metriken unter Berücksichtigung von
und .
- Erweiterung des Templates
um eine neue 'Supporter Stats'-Karte zur Anzeige der berechneten Werte.
Fügt eine neue Seite 'Spiele-Historie' hinzu, die allen Nutzern, die mit
einem oder mehreren Teams in Verbindung stehen (als Spieler, Head Coach,
Assistant Coach oder Elternteil), eine Übersicht über vergangene Spiele
ihrer Teams bietet. Die Spiele sind pro Team aufgeschlüsselt und zeigen
detaillierte Scorelines inklusive Inning-Ergebnissen an.
Änderungen umfassen:
- Neue View in zur Ermittlung der
zugehörigen Teams und Abfrage der Spielhistorie.
- Aktualisierung der in der View, um Inning-Scores auf 9
Einträge aufzufüllen und so die Template-Logik zu vereinfachen.
- Neue URL-Konfiguration in .
- Neues Template für die
Darstellung der Spielhistorie mit detaillierter Scoreline pro Inning.
- Ergänzung eines Navigationslinks in für
authentifizierte Benutzer.
Erweitert die Team-Statistikansicht, sodass Head Coaches von übergeordneten Teams
auch die Statistiken ihrer untergeordneten Teams einsehen können.
Jedes Team wird mit seinen eigenen Statistiken separat dargestellt.
Zusätzlich wurde eine Filterfunktion implementiert, die es ermöglicht,
die Statistiken nach Saison zu filtern.
Die Datenstruktur für die Inning-Ergebnisse (`inning_results`) war in der `record_results`-View (`calendars/views.py`) und der `team_statistics`-View (`team_stats/views.py`) inkonsistent.
In `calendars/views.py` wurde eine verschachtelte Struktur mit `inning_` als Schlüssel verwendet, während in `team_stats/views.py` eine Struktur mit 'home'- und 'away'-Listen erwartet wurde.
Diese Inkonsistenz führte dazu, dass die Inning-Ergebnisse in der Team-Statistik nicht korrekt angezeigt wurden.
Der Fix vereinheitlicht die Datenstruktur, sodass die `record_results`-View die Ergebnisse in dem von der `team_statistics`-View erwarteten Format speichert. Zudem wurde die Logik zum Laden der Formulardaten in `record_results` angepasst.
Fügt eine neue Seite hinzu, auf der Headcoaches Statistiken für ihre Teams einsehen können.
Die Statistikseite umfasst:
- W-L-Bilanz, Siegquote (PCT) und aktuelle Serie
- Balkendiagramm für erzielte und zugelassene Runs (RS vs. RA)
- "Luck-O-Meter" zum Vergleich der realen und pythagoreischen Siegquote
- Inning-Heatmap zur Anzeige der erzielten Runs pro Inning
Die Seite ist über einen neuen Button auf dem Dashboard für jedes vom Headcoach trainierte Team erreichbar.