members/admin: show last group invitation and gender in list

pull/82/head^2
Christian Merten 1 year ago
parent f61941c3d0
commit 55c9605428
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -15,6 +15,7 @@ from django.template.loader import get_template
from django.urls import path, reverse from django.urls import path, reverse
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from wsgiref.util import FileWrapper from wsgiref.util import FileWrapper
from django.utils import timezone
from django import forms from django import forms
from django.contrib import admin, messages from django.contrib import admin, messages
from django.contrib.admin import DateFieldListFilter from django.contrib.admin import DateFieldListFilter
@ -580,14 +581,28 @@ class InvitationToGroupAdmin(admin.TabularInline):
return False return False
class InvitedToGroupFilter(admin.SimpleListFilter):
title = _('Pending group invitation for group')
parameter_name = 'pending_group_invitation'
def lookups(self, request, model_admin):
return [(g.pk, g.name) for g in Group.objects.all()]
def queryset(self, request, queryset):
pk = self.value()
if not pk:
return queryset
return queryset.filter(invitationtogroup__group__pk=pk, invitationtogroup__rejected=False,
invitationtogroup__date__gt=(timezone.now() - timezone.timedelta(days=30)).date()).distinct()
class MemberWaitingListAdmin(CommonAdminMixin, admin.ModelAdmin): class MemberWaitingListAdmin(CommonAdminMixin, admin.ModelAdmin):
fields = ['prename', 'lastname', 'email', 'birth_date', 'gender', 'application_text', fields = ['prename', 'lastname', 'email', 'birth_date', 'gender', 'application_text',
'application_date', 'comments', 'application_date', 'comments', 'sent_reminders']
'sent_reminders'] list_display = ('name', 'birth_date', 'age', 'gender', 'application_date', 'latest_group_invitation',
list_display = ('name', 'birth_date', 'age', 'application_date', 'confirmed_mail', 'confirmed_mail', 'waiting_confirmed', 'sent_reminders')
'waiting_confirmed', 'sent_reminders')
search_fields = ('prename', 'lastname', 'email') search_fields = ('prename', 'lastname', 'email')
list_filter = ('confirmed_mail',) list_filter = ['confirmed_mail', 'gender', InvitedToGroupFilter]
actions = ['ask_for_registration', 'ask_for_wait_confirmation'] actions = ['ask_for_registration', 'ask_for_wait_confirmation']
inlines = [InvitationToGroupAdmin] inlines = [InvitationToGroupAdmin]
readonly_fields= ['application_date', 'sent_reminders'] readonly_fields= ['application_date', 'sent_reminders']

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-12-04 00:04+0100\n" "POT-Creation-Date: 2024-12-14 16:49+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,186 +18,190 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: members/admin.py:126 members/models.py:404 #: members/admin.py:127 members/models.py:404
msgid "Registration complete" msgid "Registration complete"
msgstr "Anmeldung vollständig" msgstr "Anmeldung vollständig"
#: members/admin.py:132 #: members/admin.py:133
msgid "True" msgid "True"
msgstr "Ja" msgstr "Ja"
#: members/admin.py:133 #: members/admin.py:134
msgid "False" msgid "False"
msgstr "Nein" msgstr "Nein"
#: members/admin.py:134 #: members/admin.py:135
msgid "All" msgid "All"
msgstr "Alle" msgstr "Alle"
#: members/admin.py:184 members/admin.py:414 #: members/admin.py:185 members/admin.py:415
msgid "Contact information" msgid "Contact information"
msgstr "Kontaktinformationen" msgstr "Kontaktinformationen"
#: members/admin.py:189 members/admin.py:419 #: members/admin.py:190 members/admin.py:420
msgid "Skills" msgid "Skills"
msgstr "Fähigkeiten" msgstr "Fähigkeiten"
#: members/admin.py:194 members/admin.py:424 #: members/admin.py:195 members/admin.py:425
msgid "Others" msgid "Others"
msgstr "Sonstiges" msgstr "Sonstiges"
#: members/admin.py:200 members/admin.py:429 #: members/admin.py:201 members/admin.py:430
msgid "Organizational" msgid "Organizational"
msgstr "Organisatorisches" msgstr "Organisatorisches"
#: members/admin.py:282 #: members/admin.py:283
msgid "Compose new mail to selected members" msgid "Compose new mail to selected members"
msgstr "Neue Nachricht an ausgewählte Teilnehmer*innen verfassen" msgstr "Neue Nachricht an ausgewählte Teilnehmer*innen verfassen"
#: members/admin.py:288 #: members/admin.py:289
msgid "Echo required" msgid "Echo required"
msgstr "Rückmeldung erforderlich" msgstr "Rückmeldung erforderlich"
#: members/admin.py:290 #: members/admin.py:291
msgid "Successfully requested echo from selected members." msgid "Successfully requested echo from selected members."
msgstr "" msgstr ""
"Rückmeldungsaufforderung erfolgreich an ausgewählte Teilnehmer*innen " "Rückmeldungsaufforderung erfolgreich an ausgewählte Teilnehmer*innen "
"verschickt." "verschickt."
#: members/admin.py:291 #: members/admin.py:292
msgid "Request echo from selected members" msgid "Request echo from selected members"
msgstr "Rückmeldungsaufforderung an ausgewählte Teilnehmer*innen verschicken" msgstr "Rückmeldungsaufforderung an ausgewählte Teilnehmer*innen verschicken"
#: members/admin.py:300 #: members/admin.py:301
#, python-format #, python-format
msgid "%(name)s does not have a DAV360 email address or is already registered." msgid "%(name)s does not have a DAV360 email address or is already registered."
msgstr "%(name)s hat keine DAV360 E-Mail Adresse oder ist bereits registriert." msgstr "%(name)s hat keine DAV360 E-Mail Adresse oder ist bereits registriert."
#: members/admin.py:302 #: members/admin.py:303
#, python-format #, python-format
msgid "Successfully invited %(name)s as user." msgid "Successfully invited %(name)s as user."
msgstr "Erfolgreich %(name)s aufgefordert Zugangsdaten zu wählen." msgstr "Erfolgreich %(name)s aufgefordert Zugangsdaten zu wählen."
#: members/admin.py:304 #: members/admin.py:305
msgid "Successfully invited selected members to join as users." msgid "Successfully invited selected members to join as users."
msgstr "" msgstr ""
"Erfolgreich ausgewählte Teilnehmer*innen aufgefordert Zugangsdaten zu wählen." "Erfolgreich ausgewählte Teilnehmer*innen aufgefordert Zugangsdaten zu wählen."
#: members/admin.py:306 #: members/admin.py:307
msgid "Some members have been invited, others could not be invited." msgid "Some members have been invited, others could not be invited."
msgstr "" msgstr ""
"Manche Teilnehmer*innen wurden eingeladen, andere konnten nicht eingeladen " "Manche Teilnehmer*innen wurden eingeladen, andere konnten nicht eingeladen "
"werden." "werden."
#: members/admin.py:313 members/admin.py:330 #: members/admin.py:314 members/admin.py:331
msgid "Permission denied." msgid "Permission denied."
msgstr "Fehlende Berechtigungen." msgstr "Fehlende Berechtigungen."
#: members/admin.py:320 members/admin.py:354 #: members/admin.py:321 members/admin.py:355
#: members/templates/admin/invite_as_user.html:21 #: members/templates/admin/invite_as_user.html:21
msgid "Invite as user" msgid "Invite as user"
msgstr "Kompass Zugangsdaten wählen lassen" msgstr "Kompass Zugangsdaten wählen lassen"
#: members/admin.py:325 #: members/admin.py:326
msgid "Invite selected members to join Kompass as users." msgid "Invite selected members to join Kompass as users."
msgstr "Ausgewählte Teilnehmer*innen Kompass Zugangsdaten wählen lassen." msgstr "Ausgewählte Teilnehmer*innen Kompass Zugangsdaten wählen lassen."
#: members/admin.py:336 #: members/admin.py:337
msgid "Member not found." msgid "Member not found."
msgstr "Teilnehmer*in nicht gefunden." msgstr "Teilnehmer*in nicht gefunden."
#: members/admin.py:340 #: members/admin.py:341
#, python-format #, python-format
msgid "%(name)s already has login data." msgid "%(name)s already has login data."
msgstr "%(name)s hat schon Zugangsdaten." msgstr "%(name)s hat schon Zugangsdaten."
#: members/admin.py:345 #: members/admin.py:346
#, python-format #, python-format
msgid "The configured email address for %(name)s is not an internal one." 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." msgstr "Die für %(name)s eingestellte E-Mail Adresse ist keine DAV360 Adresse."
#: members/admin.py:359 #: members/admin.py:360
#, python-format #, python-format
msgid "%(name)s already has a pending invitation as user." msgid "%(name)s already has a pending invitation as user."
msgstr "" msgstr ""
"%(name)s hat bereits eine ausstehende Aufforderung Zugangsdaten zu wählen." "%(name)s hat bereits eine ausstehende Aufforderung Zugangsdaten zu wählen."
#: members/admin.py:377 #: members/admin.py:378
msgid "activity" msgid "activity"
msgstr "Aktivität" msgstr "Aktivität"
#: members/admin.py:387 members/models.py:56 members/models.py:1519 #: members/admin.py:388 members/models.py:56 members/models.py:1527
msgid "Name" msgid "Name"
msgstr "Name" msgstr "Name"
#: members/admin.py:477 #: members/admin.py:478
msgid "Successfully requested mail confirmation from selected registrations." msgid "Successfully requested mail confirmation from selected registrations."
msgstr "Aufforderung zur Bestätigung der Email Adresse versendet." msgstr "Aufforderung zur Bestätigung der Email Adresse versendet."
#: members/admin.py:478 #: members/admin.py:479
msgid "Request mail confirmation from selected registrations" msgid "Request mail confirmation from selected registrations"
msgstr "Aufforderung zur Bestätigung der Email Adresse versenden" msgstr "Aufforderung zur Bestätigung der Email Adresse versenden"
#: members/admin.py:485 members/admin.py:559 #: members/admin.py:486 members/admin.py:560
#, python-format #, python-format
msgid "Successfully confirmed %(name)s." msgid "Successfully confirmed %(name)s."
msgstr "Registrierung von %(name)s erfolgreich bestätigt." msgstr "Registrierung von %(name)s erfolgreich bestätigt."
#: members/admin.py:489 members/admin.py:562 #: members/admin.py:490 members/admin.py:563
#, python-format #, python-format
msgid "Can't confirm. %(name)s has unconfirmed email addresses." msgid "Can't confirm. %(name)s has unconfirmed email addresses."
msgstr "Bestätigung nicht möglich. %(name)s hat unbestätigte Emailadressen." msgstr "Bestätigung nicht möglich. %(name)s hat unbestätigte Emailadressen."
#: members/admin.py:494 #: members/admin.py:495
msgid "Successfully confirmed multiple registrations." msgid "Successfully confirmed multiple registrations."
msgstr "Erfolgreich mehrere Registrierungen bestätigt." msgstr "Erfolgreich mehrere Registrierungen bestätigt."
#: members/admin.py:496 #: members/admin.py:497
msgid "" msgid ""
"Failed to confirm some registrations because of unconfirmed email addresses." "Failed to confirm some registrations because of unconfirmed email addresses."
msgstr "" msgstr ""
"Einige Bestätigungen fehlgeschlagen, weil Emailadressen noch nicht bestätigt " "Einige Bestätigungen fehlgeschlagen, weil Emailadressen noch nicht bestätigt "
"sind." "sind."
#: members/admin.py:497 #: members/admin.py:498
msgid "Confirm selected registrations" msgid "Confirm selected registrations"
msgstr "Ausgewählte Registrierungen bestätigen" msgstr "Ausgewählte Registrierungen bestätigen"
#: members/admin.py:520 #: members/admin.py:521
msgid "Demote selected registrations to waiters." msgid "Demote selected registrations to waiters."
msgstr "Ausgewählte Registrierungen zurück auf die Warteliste setzen." msgstr "Ausgewählte Registrierungen zurück auf die Warteliste setzen."
#: members/admin.py:536 #: members/admin.py:537
msgid "Demote member to waiter" msgid "Demote member to waiter"
msgstr "Ausgewählte Registrierung zurück auf die Warteliste setzen." msgstr "Ausgewählte Registrierung zurück auf die Warteliste setzen."
#: members/admin.py:554 #: members/admin.py:555
#, python-format #, python-format
msgid "Successfully demoted %(name)s to waiter." msgid "Successfully demoted %(name)s to waiter."
msgstr "%(name)s zurück auf die Warteliste gesetzt." msgstr "%(name)s zurück auf die Warteliste gesetzt."
#: members/admin.py:569 members/models.py:411 members/models.py:777 #: members/admin.py:570 members/models.py:411 members/models.py:777
#: members/models.py:1264 #: members/models.py:1272
msgid "Group" msgid "Group"
msgstr "Gruppe" msgstr "Gruppe"
#: members/admin.py:603 #: members/admin.py:585
msgid "Pending group invitation for group"
msgstr "Ausstehende Gruppeneinladung für Gruppe"
#: members/admin.py:618
#, python-format #, python-format
msgid "Successfully asked %(name)s to confirm their waiting status." msgid "Successfully asked %(name)s to confirm their waiting status."
msgstr "Erfolgreich %(name)s aufgefordert den Wartelistenplatz zu bestätigen." msgstr "Erfolgreich %(name)s aufgefordert den Wartelistenplatz zu bestätigen."
#: members/admin.py:604 #: members/admin.py:619
msgid "Ask selected waiters to confirm their waiting status" msgid "Ask selected waiters to confirm their waiting status"
msgstr "Wartende auffordern den Wartelistenplatz zu bestätigen" msgstr "Wartende auffordern den Wartelistenplatz zu bestätigen"
#: members/admin.py:613 members/admin.py:673 #: members/admin.py:628 members/admin.py:688
msgid "" msgid ""
"An error occurred while trying to invite said members. Please try again." "An error occurred while trying to invite said members. Please try again."
msgstr "" msgstr ""
"Beim Einladen dieser Personen ist ein Fehler aufgetreten. Bitte versuche es " "Beim Einladen dieser Personen ist ein Fehler aufgetreten. Bitte versuche es "
"nochmal. " "nochmal. "
#: members/admin.py:617 members/admin.py:678 #: members/admin.py:632 members/admin.py:693
msgid "" msgid ""
"The selected group does not have a contact email. Please first set a contact " "The selected group does not have a contact email. Please first set a contact "
"email and then try again." "email and then try again."
@ -205,43 +209,43 @@ msgstr ""
"Die ausgewählte Gruppe hat keine Kontakt E-Mail Adresse. Bitte stelle eine " "Die ausgewählte Gruppe hat keine Kontakt E-Mail Adresse. Bitte stelle eine "
"Kontakt E-Mail Adresse ein und versuche es erneut." "Kontakt E-Mail Adresse ein und versuche es erneut."
#: members/admin.py:625 members/admin.py:685 #: members/admin.py:640 members/admin.py:700
#, python-format #, python-format
msgid "Successfully invited %(name)s to %(group)s." msgid "Successfully invited %(name)s to %(group)s."
msgstr "Erfolgreich %(name)s zu Gruppe %(group)s eingeladen." msgstr "Erfolgreich %(name)s zu Gruppe %(group)s eingeladen."
#: members/admin.py:629 members/admin.py:691 #: members/admin.py:644 members/admin.py:706
msgid "Select group for invitation" msgid "Select group for invitation"
msgstr "Wähle Gruppe für Einladung aus" msgstr "Wähle Gruppe für Einladung aus"
#: members/admin.py:636 #: members/admin.py:651
msgid "Offer waiter a place in a group." msgid "Offer waiter a place in a group."
msgstr "Personen auf der Warteliste einen Gruppenplatz anbieten." msgstr "Personen auf der Warteliste einen Gruppenplatz anbieten."
#: members/admin.py:708 members/models.py:72 #: members/admin.py:723 members/models.py:72
msgid "name" msgid "name"
msgstr "Name" msgstr "Name"
#: members/admin.py:709 #: members/admin.py:724
msgid "" msgid ""
"The group name may only consist of letters, numerals, _, -, :, * and spaces." "The group name may only consist of letters, numerals, _, -, :, * and spaces."
msgstr "" msgstr ""
"Der Gruppenname darf nur aus Buchstaben, Zahlen, _, -, :, * oder Leerzeichen " "Der Gruppenname darf nur aus Buchstaben, Zahlen, _, -, :, * oder Leerzeichen "
"bestehen." "bestehen."
#: members/admin.py:738 #: members/admin.py:753
msgid "Difficulty" msgid "Difficulty"
msgstr "Schwierigkeit" msgstr "Schwierigkeit"
#: members/admin.py:741 #: members/admin.py:756
msgid "Tour type" msgid "Tour type"
msgstr "Art der Tour" msgstr "Art der Tour"
#: members/admin.py:744 members/models.py:995 #: members/admin.py:759 members/models.py:1003
msgid "Means of transportation" msgid "Means of transportation"
msgstr "Verkehrsmittel" msgstr "Verkehrsmittel"
#: members/admin.py:770 #: members/admin.py:785
msgid "" msgid ""
"Please list here all expenses in relation with this excursion and upload " "Please list here all expenses in relation with this excursion and upload "
"relevant bills. These have to be permanently stored for the application of " "relevant bills. These have to be permanently stored for the application of "
@ -254,7 +258,7 @@ msgstr ""
"einzelnen Posten wird dabei auf der LJP-Kostenübersicht angezeigt (sinnvoll " "einzelnen Posten wird dabei auf der LJP-Kostenübersicht angezeigt (sinnvoll "
"wären z.B. Anreise, Verpflegung, Material etc.)." "wären z.B. Anreise, Verpflegung, Material etc.)."
#: members/admin.py:788 #: members/admin.py:803
msgid "" msgid ""
"Here you can work on a seminar report for applying for financial " "Here you can work on a seminar report for applying for financial "
"contributions from Landesjugendplan (LJP). More information on creating a " "contributions from Landesjugendplan (LJP). More information on creating a "
@ -267,7 +271,7 @@ msgstr ""
"wahlweise nur TN-Liste und Kostenübersicht kannst du anschließend " "wahlweise nur TN-Liste und Kostenübersicht kannst du anschließend "
"herunterladen." "herunterladen."
#: members/admin.py:796 #: members/admin.py:811
msgid "" msgid ""
"Please list all participants (also youth leaders) of this excursion. Here " "Please list all participants (also youth leaders) of this excursion. Here "
"you can still make changes just before departure and hence generate the " "you can still make changes just before departure and hence generate the "
@ -278,34 +282,34 @@ msgstr ""
"jederzeit die aktuelle Teilnehmer*innenliste für die Krisenintervention " "jederzeit die aktuelle Teilnehmer*innenliste für die Krisenintervention "
"generieren." "generieren."
#: members/admin.py:842 #: members/admin.py:857
#, python-format #, python-format
msgid "You are not allowed to view all members on note list %(name)s." msgid "You are not allowed to view all members on note list %(name)s."
msgstr "" msgstr ""
"Du hast nicht die nötigen Rechte um alle Teilnehmer*innen der Notizliste " "Du hast nicht die nötigen Rechte um alle Teilnehmer*innen der Notizliste "
"%(name)s anzusehen." "%(name)s anzusehen."
#: members/admin.py:852 #: members/admin.py:867
msgid "Generate PDF summary" msgid "Generate PDF summary"
msgstr "Übersicht erstellen" msgstr "Übersicht erstellen"
#: members/admin.py:856 #: members/admin.py:871
msgid "Full report" msgid "Full report"
msgstr "Vollständiger Seminarbericht" msgstr "Vollständiger Seminarbericht"
#: members/admin.py:857 #: members/admin.py:872
msgid "Costs and participants only" msgid "Costs and participants only"
msgstr "Nur Kosten und Teilnehmende" msgstr "Nur Kosten und Teilnehmende"
#: members/admin.py:858 #: members/admin.py:873
msgid "Mode" msgid "Mode"
msgstr "Modus" msgstr "Modus"
#: members/admin.py:859 #: members/admin.py:874
msgid "Prepend V32" msgid "Prepend V32"
msgstr "V32 Formblatt einfügen" msgstr "V32 Formblatt einfügen"
#: members/admin.py:875 #: members/admin.py:890
msgid "" msgid ""
"General information on your excursion. These are partly relevant for the " "General information on your excursion. These are partly relevant for the "
"amount of financial compensation (means of transport, travel distance, etc.)." "amount of financial compensation (means of transport, travel distance, etc.)."
@ -314,48 +318,48 @@ msgstr ""
"teilweise relevant für die Zuschüsse aus dem Jugendetat (Verkehrsmittel, " "teilweise relevant für die Zuschüsse aus dem Jugendetat (Verkehrsmittel, "
"Fahrstrecke in km)." "Fahrstrecke in km)."
#: members/admin.py:905 #: members/admin.py:920
#, python-format #, python-format
msgid "You are not allowed to view all members on excursion %(name)s." msgid "You are not allowed to view all members on excursion %(name)s."
msgstr "" msgstr ""
"Du hast nicht die nötigen Rechte um alle Teilnehmer*innen der Ausfahrt " "Du hast nicht die nötigen Rechte um alle Teilnehmer*innen der Ausfahrt "
"%(name)s anzusehen." "%(name)s anzusehen."
#: members/admin.py:913 #: members/admin.py:928
msgid "Generate crisis intervention list" msgid "Generate crisis intervention list"
msgstr "Kriseninterventionsliste erstellen" msgstr "Kriseninterventionsliste erstellen"
#: members/admin.py:921 #: members/admin.py:936
msgid "Generate overview" msgid "Generate overview"
msgstr "Hinweise für Jugendleiter erstellen" msgstr "Hinweise für Jugendleiter erstellen"
#: members/admin.py:925 members/admin.py:957 #: members/admin.py:940 members/admin.py:972
#: members/templates/admin/generate_seminar_report.html:21 #: members/templates/admin/generate_seminar_report.html:21
msgid "Generate seminar report" msgid "Generate seminar report"
msgstr "Landesjugendplan Antrag erstellen" msgstr "Landesjugendplan Antrag erstellen"
#: members/admin.py:938 #: members/admin.py:953
msgid "Please select a mode." msgid "Please select a mode."
msgstr "Bitte wähle einen Modus aus." msgstr "Bitte wähle einen Modus aus."
#: members/admin.py:943 #: members/admin.py:958
msgid "" msgid ""
"Full mode is only available, if the seminar report section is filled out." "Full mode is only available, if the seminar report section is filled out."
msgstr "" msgstr ""
"Der vollständiger Modus ist nur verfügbar, wenn der Seminarbericht " "Der vollständiger Modus ist nur verfügbar, wenn der Seminarbericht "
"ausgefüllt ist. " "ausgefüllt ist. "
#: members/admin.py:969 #: members/admin.py:984
msgid "Generate SJR application" msgid "Generate SJR application"
msgstr "SJR Antrag erstellen" msgstr "SJR Antrag erstellen"
#: members/admin.py:973 #: members/admin.py:988
msgid "No statement found. Please add a statement and then retry." msgid "No statement found. Please add a statement and then retry."
msgstr "" msgstr ""
"Keine Abrechnung angelegt. Bitte lege eine Abrechnung and und versuche es " "Keine Abrechnung angelegt. Bitte lege eine Abrechnung and und versuche es "
"erneut." "erneut."
#: members/admin.py:977 #: members/admin.py:992
msgid "" msgid ""
"Successfully submited statement. The finance department will notify you as " "Successfully submited statement. The finance department will notify you as "
"soon as possible." "soon as possible."
@ -363,7 +367,7 @@ msgstr ""
"Abrechnung erfolgreich eingericht. Die Finanzabteilung wird sich bei dir so " "Abrechnung erfolgreich eingericht. Die Finanzabteilung wird sich bei dir so "
"schnell wie möglich melden." "schnell wie möglich melden."
#: members/admin.py:980 #: members/admin.py:995
#: members/templates/admin/freizeit_finance_overview.html:21 #: members/templates/admin/freizeit_finance_overview.html:21
msgid "Finance overview" msgid "Finance overview"
msgstr "Kostenübersicht" msgstr "Kostenübersicht"
@ -400,11 +404,11 @@ msgstr "Samstag"
msgid "Sunday" msgid "Sunday"
msgstr "Sonntag" msgstr "Sonntag"
#: members/models.py:57 members/models.py:981 #: members/models.py:57 members/models.py:989
msgid "Description" msgid "Description"
msgstr "Beschreibung" msgstr "Beschreibung"
#: members/models.py:63 members/models.py:973 #: members/models.py:63 members/models.py:981
#: members/templates/members/change_member.html:18 #: members/templates/members/change_member.html:18
msgid "Activity" msgid "Activity"
msgstr "Aktivität" msgstr "Aktivität"
@ -437,7 +441,7 @@ msgstr "Jugendleiter"
msgid "week day" msgid "week day"
msgstr "Wochentag" msgstr "Wochentag"
#: members/models.py:80 members/models.py:1346 #: members/models.py:80 members/models.py:1354
msgid "Starting time" msgid "Starting time"
msgstr "Zeitpunkt" msgstr "Zeitpunkt"
@ -626,8 +630,8 @@ msgstr "Neue unbestätigte Registrierung für Gruppe %(group)s"
msgid "Set login data for Kompass" msgid "Set login data for Kompass"
msgstr "Zugangsdaten für Kompass wählen" msgstr "Zugangsdaten für Kompass wählen"
#: members/models.py:728 members/models.py:929 members/models.py:940 #: members/models.py:728 members/models.py:937 members/models.py:948
#: members/models.py:1295 members/models.py:1302 #: members/models.py:1303 members/models.py:1310
msgid "Member" msgid "Member"
msgstr "Teilnehmer*in" msgstr "Teilnehmer*in"
@ -708,240 +712,244 @@ msgstr "Verpasste Erinnerungen"
msgid "Waiters" msgid "Waiters"
msgstr "Warteliste" msgstr "Warteliste"
#: members/models.py:846 #: members/models.py:837
msgid "Latest group invitation"
msgstr "Letzte Gruppeneinladung"
#: members/models.py:854
msgid "Waiting status confirmed" msgid "Waiting status confirmed"
msgstr "Wartelistenplatz bestätigt" msgstr "Wartelistenplatz bestätigt"
#: members/models.py:853 #: members/models.py:861
msgid "Waiting confirmation needed" msgid "Waiting confirmation needed"
msgstr "Wartelistenplatzbestätigung erforderlich" msgstr "Wartelistenplatzbestätigung erforderlich"
#: members/models.py:908 #: members/models.py:916
msgid "Invitation to trial group meeting" msgid "Invitation to trial group meeting"
msgstr "Einladung zu Schnupperstunde" msgstr "Einladung zu Schnupperstunde"
#: members/models.py:920 #: members/models.py:928
msgid "Unregistered from waiting list" msgid "Unregistered from waiting list"
msgstr "Von der Warteliste abgemeldet" msgstr "Von der Warteliste abgemeldet"
#: members/models.py:934 #: members/models.py:942
msgid "Comment" msgid "Comment"
msgstr "Kommentar" msgstr "Kommentar"
#: members/models.py:941 members/models.py:1303 #: members/models.py:949 members/models.py:1311
msgid "Members" msgid "Members"
msgstr "Teilnehmer*innen" msgstr "Teilnehmer*innen"
#: members/models.py:975 #: members/models.py:983
msgid "Place" msgid "Place"
msgstr "Stützpunkt / Ort" msgstr "Stützpunkt / Ort"
#: members/models.py:976 #: members/models.py:984
msgid "Destination (optional)" msgid "Destination (optional)"
msgstr "ggf. Ziel" msgstr "ggf. Ziel"
#: members/models.py:978 #: members/models.py:986
msgid "e.g. a peak" msgid "e.g. a peak"
msgstr "z.B. ein Gipfel" msgstr "z.B. ein Gipfel"
#: members/models.py:979 #: members/models.py:987
msgid "Begin" msgid "Begin"
msgstr "Anfang" msgstr "Anfang"
#: members/models.py:980 #: members/models.py:988
msgid "End (optional)" msgid "End (optional)"
msgstr "Ende" msgstr "Ende"
#: members/models.py:983 #: members/models.py:991
msgid "Groups" msgid "Groups"
msgstr "Gruppen" msgstr "Gruppen"
#: members/models.py:996 #: members/models.py:1004
msgid "Kilometers traveled" msgid "Kilometers traveled"
msgstr "Fahrstrecke in Kilometer" msgstr "Fahrstrecke in Kilometer"
#: members/models.py:999 #: members/models.py:1007
msgid "Categories" msgid "Categories"
msgstr "Kategorien" msgstr "Kategorien"
#: members/models.py:1000 #: members/models.py:1008
msgid "easy" msgid "easy"
msgstr "leicht" msgstr "leicht"
#: members/models.py:1000 #: members/models.py:1008
msgid "medium" msgid "medium"
msgstr "mittel" msgstr "mittel"
#: members/models.py:1000 #: members/models.py:1008
msgid "hard" msgid "hard"
msgstr "schwer" msgstr "schwer"
#: members/models.py:1010 members/models.py:1326 #: members/models.py:1018 members/models.py:1334
#: members/templates/admin/freizeit_finance_overview.html:26 #: members/templates/admin/freizeit_finance_overview.html:26
msgid "Excursion" msgid "Excursion"
msgstr "Ausfahrt" msgstr "Ausfahrt"
#: members/models.py:1011 #: members/models.py:1019
msgid "Excursions" msgid "Excursions"
msgstr "Ausfahrten" msgstr "Ausfahrten"
#: members/models.py:1241 members/models.py:1317 members/models.py:1533 #: members/models.py:1249 members/models.py:1325 members/models.py:1541
msgid "Title" msgid "Title"
msgstr "Titel" msgstr "Titel"
#: members/models.py:1242 members/models.py:1260 members/models.py:1534 #: members/models.py:1250 members/models.py:1268 members/models.py:1542
msgid "Date" msgid "Date"
msgstr "Datum" msgstr "Datum"
#: members/models.py:1261 #: members/models.py:1269
msgid "Location" msgid "Location"
msgstr "Ort" msgstr "Ort"
#: members/models.py:1262 #: members/models.py:1270
msgid "Topic" msgid "Topic"
msgstr "Thema" msgstr "Thema"
#: members/models.py:1286 #: members/models.py:1294
msgid "Jugendleiter" msgid "Jugendleiter"
msgstr "Jugendleiter" msgstr "Jugendleiter"
#: members/models.py:1289 #: members/models.py:1297
msgid "Klettertreff" msgid "Klettertreff"
msgstr "Klettertreff" msgstr "Klettertreff"
#: members/models.py:1290 #: members/models.py:1298
msgid "Klettertreffs" msgid "Klettertreffs"
msgstr "Klettertreffs" msgstr "Klettertreffs"
#: members/models.py:1308 #: members/models.py:1316
msgid "Password" msgid "Password"
msgstr "Passwort" msgstr "Passwort"
#: members/models.py:1311 #: members/models.py:1319
msgid "registration password" msgid "registration password"
msgstr "Registrierungspassort" msgstr "Registrierungspassort"
#: members/models.py:1312 #: members/models.py:1320
msgid "registration passwords" msgid "registration passwords"
msgstr "Registrierungspasswörter" msgstr "Registrierungspasswörter"
#: members/models.py:1319 #: members/models.py:1327
msgid "Alpinistic goals" msgid "Alpinistic goals"
msgstr "Alpintechnische Ziele" msgstr "Alpintechnische Ziele"
#: members/models.py:1320 #: members/models.py:1328
msgid "Pedagogic goals" msgid "Pedagogic goals"
msgstr "Pädagogische Ziele" msgstr "Pädagogische Ziele"
#: members/models.py:1321 #: members/models.py:1329
msgid "Content and methods" msgid "Content and methods"
msgstr "Inhalte und Methoden" msgstr "Inhalte und Methoden"
#: members/models.py:1322 #: members/models.py:1330
msgid "Evaluation" msgid "Evaluation"
msgstr "Wertung" msgstr "Wertung"
#: members/models.py:1323 #: members/models.py:1331
msgid "Experiences and possible improvements" msgid "Experiences and possible improvements"
msgstr "Erfahrungen und Verbesserungsvorschläge" msgstr "Erfahrungen und Verbesserungsvorschläge"
#: members/models.py:1332 members/models.py:1353 #: members/models.py:1340 members/models.py:1361
msgid "LJP Proposal" msgid "LJP Proposal"
msgstr "Seminarbericht" msgstr "Seminarbericht"
#: members/models.py:1333 #: members/models.py:1341
msgid "LJP Proposals" msgid "LJP Proposals"
msgstr "Seminarberichte" msgstr "Seminarberichte"
#: members/models.py:1347 #: members/models.py:1355
msgid "Duration in hours" msgid "Duration in hours"
msgstr "Dauer in Stunden" msgstr "Dauer in Stunden"
#: members/models.py:1350 #: members/models.py:1358
msgid "Activity and method" msgid "Activity and method"
msgstr "Art der Aktion inkl. Methode" msgstr "Art der Aktion inkl. Methode"
#: members/models.py:1358 #: members/models.py:1366
msgid "Intervention" msgid "Intervention"
msgstr "Aktion" msgstr "Aktion"
#: members/models.py:1359 #: members/models.py:1367
msgid "Interventions" msgid "Interventions"
msgstr "Aktionen" msgstr "Aktionen"
#: members/models.py:1461 members/models.py:1491 #: members/models.py:1469 members/models.py:1499
msgid "May list members" msgid "May list members"
msgstr "Darf folgende Teilnehmer*innen listen" msgstr "Darf folgende Teilnehmer*innen listen"
#: members/models.py:1463 members/models.py:1493 #: members/models.py:1471 members/models.py:1501
msgid "May view members" msgid "May view members"
msgstr "Darf folgende Teilnehmer*innen anzeigen" msgstr "Darf folgende Teilnehmer*innen anzeigen"
#: members/models.py:1465 members/models.py:1495 #: members/models.py:1473 members/models.py:1503
msgid "May change members" msgid "May change members"
msgstr "Darf folgende Teilnehmer*innen ändern" msgstr "Darf folgende Teilnehmer*innen ändern"
#: members/models.py:1467 members/models.py:1497 #: members/models.py:1475 members/models.py:1505
msgid "May delete members" msgid "May delete members"
msgstr "Darf folgende Teilnehmer*innen löschen" msgstr "Darf folgende Teilnehmer*innen löschen"
#: members/models.py:1471 members/models.py:1501 #: members/models.py:1479 members/models.py:1509
msgid "May list members of groups" msgid "May list members of groups"
msgstr "Darf Teilnehmer*innen folgender Gruppen listen" msgstr "Darf Teilnehmer*innen folgender Gruppen listen"
#: members/models.py:1473 members/models.py:1503 #: members/models.py:1481 members/models.py:1511
msgid "May view members of groups" msgid "May view members of groups"
msgstr "Darf Teilnehmer*innen folgender Gruppen anzeigen" msgstr "Darf Teilnehmer*innen folgender Gruppen anzeigen"
#: members/models.py:1475 members/models.py:1505 #: members/models.py:1483 members/models.py:1513
msgid "May change members of groups" msgid "May change members of groups"
msgstr "Darf Teilnehmer*innen folgender Gruppen ändern" msgstr "Darf Teilnehmer*innen folgender Gruppen ändern"
#: members/models.py:1477 members/models.py:1507 #: members/models.py:1485 members/models.py:1515
msgid "May delete members of groups" msgid "May delete members of groups"
msgstr "Darf Teilnehmer*innen folgender Gruppen löschen" msgstr "Darf Teilnehmer*innen folgender Gruppen löschen"
#: members/models.py:1480 members/models.py:1481 members/models.py:1484 #: members/models.py:1488 members/models.py:1489 members/models.py:1492
msgid "Permissions" msgid "Permissions"
msgstr "Berechtigungen" msgstr "Berechtigungen"
#: members/models.py:1510 members/models.py:1511 members/models.py:1514 #: members/models.py:1518 members/models.py:1519 members/models.py:1522
msgid "Group permissions" msgid "Group permissions"
msgstr "Gruppenberechtigungen" msgstr "Gruppenberechtigungen"
#: members/models.py:1520 #: members/models.py:1528
msgid "Permission needed" msgid "Permission needed"
msgstr "Freigabe erforderlich" msgstr "Freigabe erforderlich"
#: members/models.py:1523 #: members/models.py:1531
msgid "Training category" msgid "Training category"
msgstr "Fortbildungstyp" msgstr "Fortbildungstyp"
#: members/models.py:1524 #: members/models.py:1532
msgid "Training categories" msgid "Training categories"
msgstr "Fortbildungstypen" msgstr "Fortbildungstypen"
#: members/models.py:1535 #: members/models.py:1543
msgid "Category" msgid "Category"
msgstr "Kategorien" msgstr "Kategorien"
#: members/models.py:1536 #: members/models.py:1544
msgid "Comments" msgid "Comments"
msgstr "Kommentar" msgstr "Kommentar"
#: members/models.py:1537 #: members/models.py:1545
msgid "Participated" msgid "Participated"
msgstr "Teilgenommmen" msgstr "Teilgenommmen"
#: members/models.py:1538 #: members/models.py:1546
msgid "Passed" msgid "Passed"
msgstr "Bestanden" msgstr "Bestanden"
#: members/models.py:1541 #: members/models.py:1549
msgid "Training" msgid "Training"
msgstr "Fortbildung" msgstr "Fortbildung"
#: members/models.py:1542 #: members/models.py:1550
msgid "Trainings" msgid "Trainings"
msgstr "Fortbildungen" msgstr "Fortbildungen"

@ -828,6 +828,14 @@ class MemberWaitingList(Person):
'delete_obj': has_global_perm('members.delete_global_memberwaitinglist'), 'delete_obj': has_global_perm('members.delete_global_memberwaitinglist'),
} }
def latest_group_invitation(self):
gi = self.invitationtogroup_set.order_by('-pk').first()
if gi:
return "{group}: {status}".format(group=gi.group.name, status=gi.status())
else:
return "-"
latest_group_invitation.short_description = _('Latest group invitation')
@property @property
def waiting_confirmation_needed(self): def waiting_confirmation_needed(self):
"""Returns if person should be asked to confirm waiting status.""" """Returns if person should be asked to confirm waiting status."""

Loading…
Cancel
Save