feat(members/admin): add training overview #174

Merged
christian.merten merged 57 commits from MK/training_tab into main 2 months ago
Collaborator

Ich hab mich mal an einer neuen View für Fortbildungen versucht.

  • Navigationsgruppe "Ausbildung" enthält jetzt die Modelle Fortbildungen und Fortbildungstypen

  • permissions um die View zu sehen, ist aktuell view_trainings, da bin ich mir aber nicht sicher

  • Neues Feld "Activity" ermöglicht Angabe einer alpinen Spielart für jede Fortbildung

  • Tab hat eine Beschreibung, die Aufgabe der User klar macht.

  • Felder teilgenommen und bestanden sind sensibel, dafür habe ich analog Ausfahrten-Genehmigung eine permission angelegt, durch die nur eine Ausbildungsrolle eine bestandene GA/AM bestätigen kann (anhand hochgeladener TN-Bestätigung)

  • auch hier bin ich bei der permission nicht sicher, ob die so passt

Ich hab mich mal an einer neuen View für Fortbildungen versucht. - [x] Navigationsgruppe "Ausbildung" enthält jetzt die Modelle Fortbildungen und Fortbildungstypen - [ ] permissions um die View zu sehen, ist aktuell view_trainings, da bin ich mir aber nicht sicher - [x] Neues Feld "Activity" ermöglicht Angabe einer alpinen Spielart für jede Fortbildung - [x] Tab hat eine Beschreibung, die Aufgabe der User klar macht. - [x] Felder teilgenommen und bestanden sind sensibel, dafür habe ich analog Ausfahrten-Genehmigung eine permission angelegt, durch die nur eine Ausbildungsrolle eine bestandene GA/AM bestätigen kann (anhand hochgeladener TN-Bestätigung) - [ ] auch hier bin ich bei der permission nicht sicher, ob die so passt

Sieht gut aus. Ein paar Ideen:

  • In der "Teilnehmerinnenverwaltung" steht "Fortbildungstypen" noch unter "Sonstiges". Vielleicht können wir auch "Aktivitäten" nach "Ausbildung" umziehen?
  • Fortbildungsview nach Datum sortieren

Für ein follow up:

  • Benachrichtigung an Ausbildungsbeauftragte verschicken bei neu eingetragener Fortbildung?
  • Schick wäre relevante Fortbildungen (nach Aktivität und JL) im "Genehmigung"s tab anzuzeigen.
Sieht gut aus. Ein paar Ideen: - In der "Teilnehmerinnenverwaltung" steht "Fortbildungstypen" noch unter "Sonstiges". Vielleicht können wir auch "Aktivitäten" nach "Ausbildung" umziehen? - Fortbildungsview nach Datum sortieren Für ein follow up: - Benachrichtigung an Ausbildungsbeauftragte verschicken bei neu eingetragener Fortbildung? - Schick wäre relevante Fortbildungen (nach Aktivität und JL) im "Genehmigung"s tab anzuzeigen.
Poster
Collaborator
  1. kling sinnvoll!
  2. das auch, wobei individuelle Sortierung ja auch in der View vorgenommen werden kann

follow up:

  1. das finde ich sehr sinnvoll (den use-case "informiere über neu angelegtes element" gibt es öfter, z.B. neue eingereichte Abrechnung, neu angelegte Ausfahrt, ich überlege, ob man den sogar allgemein schreiben kann)
  2. ah du meinst bei der Genehmigung von Ausfahrten? Das wäre natürlich sehr schick...

edit:
allgemeingültige Benachrichtigung bräuchte ein create_date field auf allen relevanten Modellen... das wäre wohl ein Feature für sich...

1. kling sinnvoll! 2. das auch, wobei individuelle Sortierung ja auch in der View vorgenommen werden kann follow up: 1. das finde ich sehr sinnvoll (den use-case "informiere über neu angelegtes element" gibt es öfter, z.B. neue eingereichte Abrechnung, neu angelegte Ausfahrt, ich überlege, ob man den sogar allgemein schreiben kann) 2. ah du meinst bei der Genehmigung von Ausfahrten? Das wäre natürlich sehr schick... edit: allgemeingültige Benachrichtigung bräuchte ein create_date field auf allen relevanten Modellen... das wäre wohl ein Feature für sich...
marius.klein changed title from WIP: MK/training_tab to MK/training_tab 4 months ago
christian.merten reviewed 4 months ago
@ -12,12 +12,15 @@ JET_SIDE_MENU_ITEMS = [
{'name': 'membernotelist', 'permissions': ['members.view_membernotelist']},
{'name': 'klettertreff', 'permissions': ['members.view_klettertreff']},
{'name': 'activitycategory', 'permissions': ['members.view_activitycategory']},

Kannst du den activitycategory Abschnitt auch nach unten verschieben?

Kannst du den `activitycategory` Abschnitt auch nach unten verschieben?
marius.klein marked this conversation as resolved
@ -0,0 +3,4 @@
from django.db import migrations, models
class Migration(migrations.Migration):

Kannst du die migrations noch squashen?

Kannst du die migrations noch squashen?
marius.klein marked this conversation as resolved
@ -2062,1 +2063,4 @@
'image/gif'])
def __str__(self):
return self.title + ' ' + self.date.strftime('%d.%m.%Y')

date kann None sein

`date` kann `None` sein
Poster
Collaborator

ich füge alternativ (ohne Datum) an.

ich füge alternativ (ohne Datum) an.
marius.klein marked this conversation as resolved
@ -109,3 +109,3 @@
<br>
<div class="app-members module current-app">
<h2>Sonstiges</h2>
<h2>Ausbildung und Aktivtäten</h2>

Typo: "Aktivitäten"

Typo: "Aktivitäten"
marius.klein marked this conversation as resolved
christian.merten reviewed 2 months ago
@ -0,0 +1,27 @@
# Generated by Django 4.2.20 on 2025-10-10 15:50

Kannst du das File in 0044_... umbenennen? Es gibt mittlerweile schon ein 0043_....

Kannst du das File in `0044_...` umbenennen? Es gibt mittlerweile schon ein `0043_...`.
marius.klein marked this conversation as resolved
christian.merten reviewed 2 months ago
@ -474,15 +497,6 @@ msgstr ""
msgid "Finance overview"
msgstr "Kostenübersicht"
#: members/admin.py

Ich glaube das file musst du nochmal neu generieren. Das wird einen merge conflict geben.

Ich glaube das file musst du nochmal neu generieren. Das wird einen merge conflict geben.
christian.merten marked this conversation as resolved
christian.merten reviewed 2 months ago
@ -1406,0 +1417,4 @@
class MemberTrainingAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin):

Kannst du die leere zeile entfernen?

Kannst du die leere zeile entfernen?
marius.klein marked this conversation as resolved
christian.merten reviewed 2 months ago
@ -114,2 +115,4 @@
ordering = ("date",)
extra = 1
field_change_permissions = {

Das führt dazu, dass wenn nicht Admins eine Fortbildung eintragen, ein "Integrity Error" geworfen wird, weil participated nicht null sein darf.

Ich denke am Besten ist es einfach im MemberTraining model für participated und passed null zu erlauben.

Das führt dazu, dass wenn nicht Admins eine Fortbildung eintragen, ein "Integrity Error" geworfen wird, weil `participated` nicht null sein darf. Ich denke am Besten ist es einfach im `MemberTraining` model für `participated` und `passed` null zu erlauben.
marius.klein marked this conversation as resolved

Könntest du bitte auch noch ein verbose_name field im member field unter MemberTraining hinzufügen? Dann sieht es schicker aus in deiner neuen schicken Ansicht.

Könntest du bitte auch noch ein `verbose_name` field im `member` field unter `MemberTraining` hinzufügen? Dann sieht es schicker aus in deiner neuen schicken Ansicht.
marius.klein reviewed 2 months ago
@ -117,3 +123,4 @@
class EmergencyContactInline(CommonAdminInlineMixin, admin.TabularInline):
model = EmergencyContact
description = _('Please enter at least one emergency contact with contact details here. These are necessary for crisis intervention during trips.')
Poster
Collaborator

das gehört hier eigentlich nicht rein, soll ich das noch rausnehmen und wann anders mal in ne merge request machen?

das gehört hier eigentlich nicht rein, soll ich das noch rausnehmen und wann anders mal in ne merge request machen?

Ja habe es gesehen. Wäre natürlich noch besser es separat zu machen, aber ich glaube es ist okay so.

Ja habe es gesehen. Wäre natürlich noch besser es separat zu machen, aber ich glaube es ist okay so.
christian.merten marked this conversation as resolved

Sieht alles sehr gut aus jetzt. Könntest du noch einen Test hinzufügen (in members/tests/basic.py in einer neuen Klasse TrainingAdminTestCase). Ich vermute es genügt einfach beide Seiten (changelist und change) einmal aufzurufen, dann sind wir wieder bei 100% coverage.

Sieht alles sehr gut aus jetzt. Könntest du noch einen Test hinzufügen (in `members/tests/basic.py` in einer neuen Klasse `TrainingAdminTestCase`). Ich vermute es genügt einfach beide Seiten (`changelist` und `change`) einmal aufzurufen, dann sind wir wieder bei 100% coverage.
christian.merten approved these changes 2 months ago
christian.merten left a comment
Owner

Sieht top aus jetzt!

Sieht top aus jetzt!
christian.merten changed title from MK/training_tab to feat(members/admin): add training overview 2 months ago
christian.merten merged commit ad33d5db17 into main 2 months ago
christian.merten deleted branch MK/training_tab 2 months ago

Reviewers

christian.merten approved these changes 2 months ago
The pull request has been merged as ad33d5db17.
Sign in to join this conversation.
No reviewers
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: digitales/kompass#174
Loading…
There is no content yet.