From edf343710db35c04f4720e9b7abff680201cce9b Mon Sep 17 00:00:00 2001 From: mariusrklein <47218379+mariusrklein@users.noreply.github.com> Date: Fri, 17 Jan 2025 00:05:12 +0100 Subject: [PATCH 1/4] added index to people lists in PDFs --- .../members/templates/members/crisis_intervention_list.tex | 5 +++-- jdav_web/members/templates/members/notes_list.tex | 6 +++--- jdav_web/members/templates/members/seminar_report.tex | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/jdav_web/members/templates/members/crisis_intervention_list.tex b/jdav_web/members/templates/members/crisis_intervention_list.tex index b615d1b..917fa58 100644 --- a/jdav_web/members/templates/members/crisis_intervention_list.tex +++ b/jdav_web/members/templates/members/crisis_intervention_list.tex @@ -79,11 +79,12 @@ \end{tabular} \end{table} -\begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}lLlLL} +\begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}llLlLL} \toprule -\textbf{Name} & \textbf{Anschrift} & \textbf{Telefon} & \textbf{Notfallkontakte} \\ +& \textbf{Name} & \textbf{Anschrift} & \textbf{Telefon} & \textbf{Notfallkontakte} \\ \midrule {% for m in memberlist.membersonlist.all %} + {{ forloop.counter }} & {{ m.member.name|esc_all }} & {{ m.member.address|esc_all }} & {{ m.member.contact_phone_number|esc_all }} & diff --git a/jdav_web/members/templates/members/notes_list.tex b/jdav_web/members/templates/members/notes_list.tex index fbfa23e..6ba4322 100644 --- a/jdav_web/members/templates/members/notes_list.tex +++ b/jdav_web/members/templates/members/notes_list.tex @@ -35,12 +35,12 @@ \end{table} \begin{table}[H] - \begin{tabularx}{\textwidth}{@{} l l Y @{}} + \begin{tabularx}{\textwidth}{@{} l l l Y @{}} \toprule - \textbf{Name} & \textbf{Fähigkeiten (max. 100)} & \textbf{Kommentare} \\ + & \textbf{Name} & \textbf{Fähigkeiten (max. 100)} & \textbf{Kommentare} \\ \midrule {% for p in people %} - {{ p.name|esc_all }} & {{ p.qualities|esc_all }} & {{ p.comments|esc_all }} \\ + {{ forloop.counter }} & {{ p.name|esc_all }} & {{ p.qualities|esc_all }} & {{ p.comments|esc_all }} \\ {% endfor %} \bottomrule \end{tabularx} diff --git a/jdav_web/members/templates/members/seminar_report.tex b/jdav_web/members/templates/members/seminar_report.tex index a5fc4d2..f7ffa2c 100644 --- a/jdav_web/members/templates/members/seminar_report.tex +++ b/jdav_web/members/templates/members/seminar_report.tex @@ -122,12 +122,12 @@ \section{Teilnehmer*innenliste} \begin{table}[H] - \begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}lLl|c|c|c} + \begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}llLl|c|c|c} \hline - \textbf{Name} & \textbf{Anschrift} & \textbf{Geburtsdatum} & \textbf{m} & \textbf{w} & \textbf{d} \\ \hline + & \textbf{Name} & \textbf{Anschrift} & \textbf{Geburtsdatum} & \textbf{m} & \textbf{w} & \textbf{d} \\ \hline %\midrule {% for m in memberlist.membersonlist.all %} - {{ m.member.name|esc_all }} & {{ m.member.address|esc_all }} & {{ m.member.birth_date_str|esc_all }} + {{ forloop.counter }} & {{ m.member.name|esc_all }} & {{ m.member.address|esc_all }} & {{ m.member.birth_date_str|esc_all }} & {% if m.member.gender == 0 %} x {% endif %} & {% if m.member.gender == 1 %} x {% endif %} & {% if m.member.gender == 2 %} x {% endif %} \\ -- 2.38.4 From e5ff6cdfbdb6c480b9025456aa6a70a510dda831 Mon Sep 17 00:00:00 2001 From: mariusrklein <47218379+mariusrklein@users.noreply.github.com> Date: Sat, 1 Feb 2025 02:28:32 +0100 Subject: [PATCH 2/4] added counter to freizeit member page --- jdav_web/members/admin.py | 25 +++++++++++++++++++ .../members/locale/de/LC_MESSAGES/django.po | 10 +++++++- jdav_web/members/models.py | 6 +++++ .../admin/edit_inline/tabular_footer.html | 10 ++++++++ .../templates/admin/edit_inline/tabular.html | 1 + 5 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 jdav_web/members/templates/admin/edit_inline/tabular_footer.html diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index 6bd9cbe..e800bf5 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -920,6 +920,31 @@ class MemberOnListInline(CommonAdminInlineMixin, GenericTabularInline): TextField: {'widget': Textarea(attrs={'rows': 1, 'cols': 40})} } sortable_options = [] + template = "admin/edit_inline/tabular_footer.html" + + def people_count(self, obj): + if isinstance(obj, Freizeit): + # Number of organizers who are also in the Memberlist + organizer_count = len(obj.staff_on_memberlist) + + # Total number of people in the Memberlist + total_people = obj.participant_count + organizer_count + + else: # fallback if no activity was found + total_people = 0 + organizer_count = 0 + return dict(total_people=total_people, organizer_count=organizer_count) + + def get_formset(self, request, obj=None, **kwargs): + """Override get_formset to add extra context.""" + formset = super().get_formset(request, obj, **kwargs) + + if obj: # Ensure there is an Activity instance + formset.total_people = self.people_count(obj)['total_people'] + formset.organizer_count = self.people_count(obj)['organizer_count'] + + return formset + class MemberNoteListAdmin(admin.ModelAdmin): diff --git a/jdav_web/members/locale/de/LC_MESSAGES/django.po b/jdav_web/members/locale/de/LC_MESSAGES/django.po index 45701ba..331394b 100644 --- a/jdav_web/members/locale/de/LC_MESSAGES/django.po +++ b/jdav_web/members/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-19 19:16+0100\n" +"POT-Creation-Date: 2025-02-01 02:24+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1062,6 +1062,14 @@ msgstr "Zurück auf die Warteliste setzen" msgid "Cancel" msgstr "Abbrechen" +#: members/templates/admin/edit_inline/tabular_footer.html +msgid "Number of persons:" +msgstr "Anzahl Personen:" + +#: members/templates/admin/edit_inline/tabular_footer.html +msgid "thereof leaders:" +msgstr "davon Leitung:" + #: members/templates/admin/freizeit_finance_overview.html msgid "" "\n" diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index e049399..98eb762 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -1139,6 +1139,12 @@ class Freizeit(CommonModel): @property def staff_count(self): return self.jugendleiter.count() + + @property + def staff_on_memberlist(self): + ps = set(map(lambda x: x.member, self.membersonlist.distinct())) + jls = set(self.jugendleiter.distinct()) + return ps.intersection(jls) @property def participant_count(self): diff --git a/jdav_web/members/templates/admin/edit_inline/tabular_footer.html b/jdav_web/members/templates/admin/edit_inline/tabular_footer.html new file mode 100644 index 0000000..c35c4ab --- /dev/null +++ b/jdav_web/members/templates/admin/edit_inline/tabular_footer.html @@ -0,0 +1,10 @@ +{% extends "admin/edit_inline/tabular.html" %} +{% load i18n admin_urls static %} +{% block extra_footer_content %} + + + {% trans "Number of persons:" %} {{ inline_admin_formset.formset.total_people }}, {% trans "thereof leaders:" %} {{ inline_admin_formset.formset.organizer_count }} + + + +{% endblock %} \ No newline at end of file diff --git a/jdav_web/templates/admin/edit_inline/tabular.html b/jdav_web/templates/admin/edit_inline/tabular.html index 42bb07f..962bfa9 100644 --- a/jdav_web/templates/admin/edit_inline/tabular.html +++ b/jdav_web/templates/admin/edit_inline/tabular.html @@ -71,6 +71,7 @@ {% endfor %} + {% block extra_footer_content %}{% endblock %} {% if inline_admin_formset.is_collapsible %}{% endif %} -- 2.38.4 From 324d42b92c66ea2a750c8c52592fab5413c5098f Mon Sep 17 00:00:00 2001 From: mariusrklein <47218379+mariusrklein@users.noreply.github.com> Date: Sat, 1 Feb 2025 19:19:23 +0100 Subject: [PATCH 3/4] members/templates: moved custom footer template --- jdav_web/members/admin.py | 2 +- .../members/locale/de/LC_MESSAGES/django.po | 113 ++++++++++-------- .../freizeit/memberonlistinline.html} | 0 3 files changed, 61 insertions(+), 54 deletions(-) rename jdav_web/members/templates/admin/{edit_inline/tabular_footer.html => members/freizeit/memberonlistinline.html} (100%) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index e800bf5..cbf0790 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -920,7 +920,7 @@ class MemberOnListInline(CommonAdminInlineMixin, GenericTabularInline): TextField: {'widget': Textarea(attrs={'rows': 1, 'cols': 40})} } sortable_options = [] - template = "admin/edit_inline/tabular_footer.html" + template = "admin/members/freizeit/memberonlistinline.html" def people_count(self, obj): if isinstance(obj, Freizeit): diff --git a/jdav_web/members/locale/de/LC_MESSAGES/django.po b/jdav_web/members/locale/de/LC_MESSAGES/django.po index 331394b..17d3028 100644 --- a/jdav_web/members/locale/de/LC_MESSAGES/django.po +++ b/jdav_web/members/locale/de/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-02-01 02:24+0100\n" +"POT-Creation-Date: 2025-02-01 19:24+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,7 +30,7 @@ msgstr "Ja" msgid "False" msgstr "Nein" -#: members/admin.py +#: members/admin.py members/tests.py msgid "All" msgstr "Alle" @@ -82,18 +82,18 @@ msgstr "%(name)s hat keine DAV360 E-Mail Adresse oder ist bereits registriert." msgid "Successfully invited %(name)s as user." msgstr "Erfolgreich %(name)s aufgefordert Zugangsdaten zu wählen." -#: members/admin.py +#: members/admin.py members/tests.py msgid "Successfully invited selected members to join as users." msgstr "" "Erfolgreich ausgewählte Teilnehmer*innen aufgefordert Zugangsdaten zu wählen." -#: members/admin.py +#: members/admin.py members/tests.py msgid "Some members have been invited, others could not be invited." msgstr "" "Manche Teilnehmer*innen wurden eingeladen, andere konnten nicht eingeladen " "werden." -#: members/admin.py +#: members/admin.py members/tests.py msgid "Permission denied." msgstr "Fehlende Berechtigungen." @@ -105,21 +105,21 @@ msgstr "Kompass Zugangsdaten wählen lassen" msgid "Invite selected members to join Kompass as users." msgstr "Ausgewählte Teilnehmer*innen Kompass Zugangsdaten wählen lassen." -#: members/admin.py +#: members/admin.py members/tests.py msgid "Member not found." msgstr "Teilnehmer*in nicht gefunden." -#: members/admin.py +#: members/admin.py members/tests.py #, python-format msgid "%(name)s already has login data." msgstr "%(name)s hat schon Zugangsdaten." -#: members/admin.py +#: members/admin.py members/tests.py #, python-format msgid "The configured email address for %(name)s is not an internal one." msgstr "Die für %(name)s eingestellte E-Mail Adresse ist keine DAV360 Adresse." -#: members/admin.py +#: members/admin.py members/tests.py #, python-format msgid "%(name)s already has a pending invitation as user." msgstr "" @@ -133,7 +133,7 @@ msgstr "Aktivität" msgid "Name" msgstr "Name" -#: members/admin.py +#: members/admin.py members/tests.py msgid "Successfully requested mail confirmation from selected registrations." msgstr "Aufforderung zur Bestätigung der Email Adresse versendet." @@ -151,11 +151,11 @@ msgstr "Registrierung von %(name)s erfolgreich bestätigt." msgid "Can't confirm. %(name)s has unconfirmed email addresses." msgstr "Bestätigung nicht möglich. %(name)s hat unbestätigte Emailadressen." -#: members/admin.py +#: members/admin.py members/tests.py msgid "Successfully confirmed multiple registrations." msgstr "Erfolgreich mehrere Registrierungen bestätigt." -#: members/admin.py +#: members/admin.py members/tests.py msgid "" "Failed to confirm some registrations because of unconfirmed email addresses." msgstr "" @@ -170,7 +170,7 @@ msgstr "Ausgewählte Registrierungen bestätigen" msgid "Demote selected registrations to waiters." msgstr "Ausgewählte Registrierungen zurück auf die Warteliste setzen." -#: members/admin.py +#: members/admin.py members/tests.py msgid "Demote member to waiter" msgstr "Ausgewählte Registrierung zurück auf die Warteliste setzen." @@ -373,11 +373,11 @@ msgstr "Hinweise für Jugendleiter erstellen" msgid "Generate seminar report" msgstr "Landesjugendplan Antrag erstellen" -#: members/admin.py +#: members/admin.py members/tests.py msgid "Please select a mode." msgstr "Bitte wähle einen Modus aus." -#: members/admin.py +#: members/admin.py members/tests.py msgid "" "Full mode is only available, if the seminar report section is filled out." msgstr "" @@ -388,11 +388,11 @@ msgstr "" msgid "Generate SJR application" msgstr "SJR Antrag erstellen" -#: members/admin.py +#: members/admin.py members/tests.py msgid "Please select an invoice." msgstr "Bitte wähle einen Beleg aus." -#: members/admin.py +#: members/admin.py members/tests.py msgid "No statement found. Please add a statement and then retry." msgstr "" "Keine Abrechnung angelegt. Bitte lege eine Abrechnung and und versuche es " @@ -1062,14 +1062,6 @@ msgstr "Zurück auf die Warteliste setzen" msgid "Cancel" msgstr "Abbrechen" -#: members/templates/admin/edit_inline/tabular_footer.html -msgid "Number of persons:" -msgstr "Anzahl Personen:" - -#: members/templates/admin/edit_inline/tabular_footer.html -msgid "thereof leaders:" -msgstr "davon Leitung:" - #: members/templates/admin/freizeit_finance_overview.html msgid "" "\n" @@ -1204,7 +1196,7 @@ msgstr "" msgid "Summary" msgstr "Zusammenfassung" -#: members/templates/admin/freizeit_finance_overview.html +#: members/templates/admin/freizeit_finance_overview.html members/tests.py msgid "This is the estimated cost and contribution summary:" msgstr "Das ist die geschätzte Kosten- und Zuschussübersicht." @@ -1321,7 +1313,7 @@ msgstr "" "Kosten an. In diesem Fall musst du Lernziele und einen Zeitplan manuell " "hinzufügen." -#: members/templates/admin/generate_seminar_report.html +#: members/templates/admin/generate_seminar_report.html members/tests.py msgid "You may also choose to include the V32 attachment." msgstr "" "Ein LJP Antrag benötigt immer ein Formblatt (in unserem Fall V32-1 " @@ -1334,7 +1326,7 @@ msgstr "" msgid "Generate" msgstr "Erstellen" -#: members/templates/admin/generate_sjr_application.html +#: members/templates/admin/generate_sjr_application.html members/tests.py msgid "Here you can generate an allowance application for the SJR." msgstr "Hier kannst du einen SJR-Zuschussantrag erstellen." @@ -1367,7 +1359,7 @@ msgstr "" #: members/templates/admin/invite_as_user.html #: members/templates/admin/invite_for_group.html #: members/templates/admin/invite_selected_as_user.html -#: members/templates/admin/invite_selected_for_group.html +#: members/templates/admin/invite_selected_for_group.html members/tests.py msgid "Invite" msgstr "Einladen" @@ -1470,6 +1462,14 @@ msgstr "" msgid "date" msgstr "Datum" +#: members/templates/admin/members/freizeit/memberonlistinline.html +msgid "Number of persons:" +msgstr "Anzahl Personen:" + +#: members/templates/admin/members/freizeit/memberonlistinline.html +msgid "thereof leaders:" +msgstr "davon Leitung:" + #: members/templates/members/change_member.html msgid "Participations:" msgstr "Ausfahrtteilnahmen:" @@ -1494,13 +1494,13 @@ msgstr "Speichern und Registrierung bestätigen" msgid "Echo" msgstr "Rückmeldung" -#: members/templates/members/echo.html +#: members/templates/members/echo.html members/tests.py msgid "Thanks for echoing back. Here is your current data:" msgstr "" "Vielen Dank, dass du dich rückmeldest. Hier siehst du deine aktuellen Daten. " "Falls sich etwas geändert hat, trage das bitte hier ein." -#: members/templates/members/echo_failed.html +#: members/templates/members/echo_failed.html members/tests.py msgid "Echo failed" msgstr "Rückmeldung fehlgeschlagen" @@ -1521,7 +1521,7 @@ msgstr "Wenn du denkst, dass das ein Fehler ist, " msgid "contact us." msgstr "kontaktiere uns." -#: members/templates/members/echo_password.html +#: members/templates/members/echo_password.html members/tests.py msgid "" "Thanks for echoing back. Please enter the password, which you can find in " "the email we sent you.\n" @@ -1543,7 +1543,7 @@ msgstr "Rückmeldung erfolgreich" msgid "Thank you" msgstr "Danke" -#: members/templates/members/echo_success.html +#: members/templates/members/echo_success.html members/tests.py msgid "Your data was successfully updated." msgstr "Deine Daten wurden erfolgreich aktualisiert." @@ -1570,16 +1570,16 @@ msgstr "Registrierung fehlgeschlagen" msgid "Registration" msgstr "Registrierung" -#: members/templates/members/mail_confirmation_invalid.html +#: members/templates/members/mail_confirmation_invalid.html members/tests.py msgid "Mail confirmation failed" msgstr "Emailbestätigung fehlgeschlagen" #: members/templates/members/mail_confirmation_invalid.html -#: members/templates/members/waiting_confirmation_invalid.html +#: members/templates/members/waiting_confirmation_invalid.html members/tests.py msgid "The supplied link is invalid." msgstr "Der verwendete Link ist ungültig." -#: members/templates/members/mail_confirmation_success.html +#: members/templates/members/mail_confirmation_success.html members/tests.py msgid "Mail confirmed" msgstr "Emailadresse bestätigt" @@ -1652,7 +1652,7 @@ msgstr "Registrieren" msgid "Here you can register for group" msgstr "Hier kannst du dich registrieren für die Gruppe" -#: members/templates/members/register_failed.html +#: members/templates/members/register_failed.html members/tests.py msgid "Something went wrong while processing your registration." msgstr "Etwas ist schief gelaufen, bei der Verarbeitung deiner Registrierung." @@ -1707,6 +1707,7 @@ msgid "Registration for waiting list." msgstr "Registrierung für die Warteliste." #: members/templates/members/register_waiting_list_success.html +#: members/tests.py msgid "Your registration for the waiting list was successful." msgstr "Du wurdest auf die Warteliste gesetzt." @@ -1732,7 +1733,7 @@ msgstr "" msgid "Reject invitation" msgstr "Einladung ablehnen" -#: members/templates/members/reject_invalid.html +#: members/templates/members/reject_invalid.html members/tests.py msgid "This invitation is invalid or expired." msgstr "Diese Einladung ist ungültig oder abgelaufen." @@ -1800,7 +1801,7 @@ msgstr "" "zustimmst, unterschreibe bitte das Formular und lade hier einen Scan oder " "ein Bild hoch." -#: members/templates/members/upload_registration_form.html +#: members/templates/members/upload_registration_form.html members/tests.py msgid "" "If you are not an adult yet, please let someone responsible for you sign the " "agreement." @@ -1813,10 +1814,12 @@ msgid "Upload" msgstr "Hochladen" #: members/templates/members/upload_registration_form_invalid.html +#: members/tests.py msgid "The supplied key for uploading a registration form is invalid." msgstr "Der verwendete Link zum Hochladen eines Anmeldeformulars ist ungültig." #: members/templates/members/upload_registration_form_success.html +#: members/tests.py msgid "" "Thank you for uploading the registration form. Our team will process your " "registration shortly." @@ -1836,11 +1839,11 @@ msgstr "" "Leider hast du deinen Wartelistenplatz nicht rechtzeitig bestätigt und hast " "somit deinen Platz verloren. Du kannst" -#: members/templates/members/waiting_confirmation_invalid.html +#: members/templates/members/waiting_confirmation_invalid.html members/tests.py msgid "rejoin the waiting list" msgstr "der Warteliste erneut beitreten" -#: members/templates/members/waiting_confirmation_success.html +#: members/templates/members/waiting_confirmation_success.html members/tests.py msgid "Waiting confirmed" msgstr "Wartelistenplatz bestätigt" @@ -1862,6 +1865,22 @@ msgstr "" "Danke %(prename)s für dein Interesse auf der Warteliste zu bleiben.\n" "Dein Platz wurde bestätigt." +#: members/tests.py +msgid "This field is required." +msgstr "" + +#: members/tests.py members/views.py +msgid "The entered password is wrong." +msgstr "Das eingegebene Passwort ist falsch." + +#: members/tests.py members/views.py +msgid "invalid" +msgstr "ungültig" + +#: members/tests.py members/views.py +msgid "expired" +msgstr "abgelaufen" + #: members/views.py msgid "Prename of the member." msgstr "Vorname des*der Teilnehmenden" @@ -1884,18 +1903,6 @@ msgstr "" msgid "optional additional email address" msgstr "Optionale zusätzliche E-Mailadresse" -#: members/views.py -msgid "The entered password is wrong." -msgstr "Das eingegebene Passwort ist falsch." - -#: members/views.py -msgid "invalid" -msgstr "ungültig" - -#: members/views.py -msgid "expired" -msgstr "abgelaufen" - #: members/views.py msgid "Invalid emergency contacts" msgstr "Ungültige Notfallkontakte" diff --git a/jdav_web/members/templates/admin/edit_inline/tabular_footer.html b/jdav_web/members/templates/admin/members/freizeit/memberonlistinline.html similarity index 100% rename from jdav_web/members/templates/admin/edit_inline/tabular_footer.html rename to jdav_web/members/templates/admin/members/freizeit/memberonlistinline.html -- 2.38.4 From aa2f9f3257fb4dc693aa4ddb4eea040c749b245c Mon Sep 17 00:00:00 2001 From: mariusrklein <47218379+mariusrklein@users.noreply.github.com> Date: Sat, 1 Feb 2025 19:38:02 +0100 Subject: [PATCH 4/4] members/models: moved head count calculations inside freizeit model --- jdav_web/members/admin.py | 4 ++-- jdav_web/members/models.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index cbf0790..ee2413a 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -925,10 +925,10 @@ class MemberOnListInline(CommonAdminInlineMixin, GenericTabularInline): def people_count(self, obj): if isinstance(obj, Freizeit): # Number of organizers who are also in the Memberlist - organizer_count = len(obj.staff_on_memberlist) + organizer_count = obj.staff_on_memberlist_count # Total number of people in the Memberlist - total_people = obj.participant_count + organizer_count + total_people = obj.head_count else: # fallback if no activity was found total_people = 0 diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 98eb762..5929215 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -1145,12 +1145,20 @@ class Freizeit(CommonModel): ps = set(map(lambda x: x.member, self.membersonlist.distinct())) jls = set(self.jugendleiter.distinct()) return ps.intersection(jls) + + @property + def staff_on_memberlist_count(self): + return len(self.staff_on_memberlist) @property def participant_count(self): ps = set(map(lambda x: x.member, self.membersonlist.distinct())) jls = set(self.jugendleiter.distinct()) return len(ps - jls) + + @property + def head_count(self): + return self.staff_on_memberlist_count + self.participant_count @property def approved_staff_count(self): -- 2.38.4