diff --git a/jdav_web/locale/de/LC_MESSAGES/django.po b/jdav_web/locale/de/LC_MESSAGES/django.po
index d83aa2c..49905e1 100644
--- a/jdav_web/locale/de/LC_MESSAGES/django.po
+++ b/jdav_web/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: 2024-11-27 23:16+0100\n"
+"POT-Creation-Date: 2024-11-30 01:22+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -272,6 +272,10 @@ msgstr "Abrechnung einreichen"
msgid "Invite as user"
msgstr "Als Kompassbenutzer:in einladen"
+#: templates/admin/members/memberunconfirmedproxy/change_form_object_tools.html:8
+msgid "Demote to waiter"
+msgstr "Zurück auf die Warteliste setzen"
+
#: templates/admin/members/memberwaitinglist/change_form_object_tools.html:8
#: templates/admin/members/memberwaitinglist/submit_line.html:9
msgid "Invite to group"
diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py
index 31de6a6..ed28f4d 100644
--- a/jdav_web/members/admin.py
+++ b/jdav_web/members/admin.py
@@ -374,7 +374,11 @@ class MemberAdmin(CommonAdminMixin, admin.ModelAdmin):
name_text_or_link.admin_order_field = 'lastname'
-class MemberUnconfirmedAdmin(admin.ModelAdmin):
+class DemoteToWaiterForm(forms.Form):
+ _selected_action = forms.CharField(widget=forms.MultipleHiddenInput)
+
+
+class MemberUnconfirmedAdmin(CommonAdminMixin, admin.ModelAdmin):
fieldsets = [
(None,
{
@@ -422,7 +426,7 @@ class MemberUnconfirmedAdmin(admin.ModelAdmin):
list_filter = ('group', 'confirmed_mail', 'confirmed_alternative_mail')
readonly_fields = ['confirmed_mail', 'confirmed_alternative_mail',
'good_conduct_certificate_valid']
- actions = ['request_mail_confirmation', 'confirm', 'demote_to_waiter']
+ actions = ['request_mail_confirmation', 'confirm', 'demote_to_waiter_action']
inlines = [EmergencyContactInline]
change_form_template = "members/change_member_unconfirmed.html"
@@ -464,22 +468,62 @@ class MemberUnconfirmedAdmin(admin.ModelAdmin):
messages.error(request, _("Failed to confirm some registrations because of unconfirmed email addresses."))
confirm.short_description = _('Confirm selected registrations')
+ def get_urls(self):
+ urls = super().get_urls()
+
+ def wrap(view):
+ def wrapper(*args, **kwargs):
+ return self.admin_site.admin_view(view)(*args, **kwargs)
+
+ wrapper.model_admin = self
+ return update_wrapper(wrapper, view)
+
+ custom_urls = [
+ path(
+ "/demote/",
+ wrap(self.demote_to_waiter_view),
+ name="%s_%s_demote" % (self.opts.app_label, self.opts.model_name),
+ ),
+ ]
+ return custom_urls + urls
+
+ def demote_to_waiter_action(self, request, queryset):
+ return self.demote_to_waiter_view(request, queryset)
+ demote_to_waiter_action.short_description = _('Demote selected registrations to waiters.')
+
+ def demote_to_waiter_view(self, request, object_id):
+ if type(object_id) == str:
+ member = MemberUnconfirmedProxy.objects.get(pk=object_id)
+ queryset = [member]
+ form = None
+ else:
+ queryset = object_id
+ form = DemoteToWaiterForm(initial={'_selected_action': queryset.values_list('id', flat=True)})
+
+ if "apply" in request.POST:
+ self.demote_to_waiter(request, queryset)
+ return HttpResponseRedirect(reverse('admin:members_memberunconfirmedproxy_changelist'))
+
+ context = dict(self.admin_site.each_context(request),
+ title=_('Demote member to waiter'),
+ opts=self.opts,
+ queryset=queryset,
+ form=form)
+ return render(request, 'admin/demote_to_waiter.html', context=context)
+
def demote_to_waiter(self, request, queryset):
for member in queryset:
- #mem_as_dict = member.__dict__
- #del mem_as_dict['_state']
- #del mem_as_dict['id']
waiter = MemberWaitingList(prename=member.prename,
lastname=member.lastname,
email=member.email,
birth_date=member.birth_date,
+ gender=member.gender,
comments=member.comments,
confirmed_mail=member.confirmed_mail,
confirm_mail_key=member.confirm_mail_key)
waiter.save()
member.delete()
messages.success(request, _("Successfully demoted %(name)s to waiter.") % {'name': waiter.name})
- demote_to_waiter.short_description = _('Demote selected registrations to waiters.')
def response_change(self, request, member):
if "_confirm" in request.POST:
diff --git a/jdav_web/members/locale/de/LC_MESSAGES/django.po b/jdav_web/members/locale/de/LC_MESSAGES/django.po
index 6e0fabd..04677ac 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: 2024-11-28 00:04+0100\n"
+"POT-Creation-Date: 2024-11-30 01:22+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -18,165 +18,169 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: members/admin.py:126 members/models.py:382
+#: members/admin.py:125 members/models.py:381
msgid "Registration complete"
msgstr "Anmeldung vollständig"
-#: members/admin.py:132
+#: members/admin.py:131
msgid "True"
msgstr "Ja"
-#: members/admin.py:133
+#: members/admin.py:132
msgid "False"
msgstr "Nein"
-#: members/admin.py:134
+#: members/admin.py:133
msgid "All"
msgstr "Alle"
-#: members/admin.py:184 members/admin.py:397
+#: members/admin.py:183 members/admin.py:400
msgid "Contact information"
msgstr "Kontaktinformationen"
-#: members/admin.py:189 members/admin.py:402
+#: members/admin.py:188 members/admin.py:405
msgid "Skills"
msgstr "Fähigkeiten"
-#: members/admin.py:194 members/admin.py:407
+#: members/admin.py:193 members/admin.py:410
msgid "Others"
msgstr "Sonstiges"
-#: members/admin.py:200 members/admin.py:412
+#: members/admin.py:199 members/admin.py:415
msgid "Organizational"
msgstr "Organisatorisches"
-#: members/admin.py:281
+#: members/admin.py:280
msgid "Compose new mail to selected members"
msgstr "Neue Nachricht an ausgewählte Teilnehmer verfassen"
-#: members/admin.py:287
+#: members/admin.py:286
msgid "Echo required"
msgstr "Rückmeldung erforderlich"
-#: members/admin.py:289
+#: members/admin.py:288
msgid "Successfully requested echo from selected members."
msgstr ""
"Rückmeldungsaufforderung erfolgreich an ausgewählte Teilnehmer verschickt."
-#: members/admin.py:290
+#: members/admin.py:289
msgid "Request echo from selected members"
msgstr "Rückmeldungsaufforderung an ausgewählte Teilnehmer verschicken"
-#: members/admin.py:296
+#: members/admin.py:295
#, python-format
msgid "Successfully invited %(name)s as user."
msgstr "Erfolgreich %(name)s aufgefordert Zugangsdaten zu wählen."
-#: members/admin.py:298
+#: members/admin.py:297
msgid "Successfully invited selected members to join as users."
msgstr ""
"Erfolgreich ausgewählte Teilnehmer:innen aufgefordert Zugangsdaten zu wählen."
-#: members/admin.py:305 members/admin.py:322
+#: members/admin.py:304 members/admin.py:321
msgid "Permission denied."
msgstr "Fehlende Berechtigungen."
-#: members/admin.py:312 members/admin.py:341
+#: members/admin.py:311 members/admin.py:340
#: members/templates/admin/invite_as_user.html:21
msgid "Invite as user"
msgstr "Kompass Zugangsdaten wählen lassen"
-#: members/admin.py:317
+#: members/admin.py:316
msgid "Invite selected members to join Kompass as users."
msgstr "Ausgewählte Teilnehmer:innen Kompass Zugangsdaten wählen lassen."
-#: members/admin.py:328
+#: members/admin.py:327
msgid "Member not found."
msgstr "Teilnehmer:in nicht gefunden."
-#: members/admin.py:332
+#: members/admin.py:331
#, python-format
msgid "%(name)s already has login data."
msgstr "%(name)s hat schon Zugangsdaten."
-#: members/admin.py:346
+#: members/admin.py:345
#, python-format
msgid "%(name)s already has a pending invitation as user."
msgstr ""
"%(name)s hat bereits eine ausstehende Aufforderung Zugangsdaten zu wählen."
-#: members/admin.py:364
+#: members/admin.py:363
msgid "activity"
msgstr "Aktivität"
-#: members/admin.py:374 members/models.py:53 members/models.py:1401
+#: members/admin.py:373 members/models.py:53 members/models.py:1395
msgid "Name"
msgstr "Name"
-#: members/admin.py:446
+#: members/admin.py:449
msgid "Successfully requested mail confirmation from selected registrations."
msgstr "Aufforderung zur Bestätigung der Email Adresse versendet."
-#: members/admin.py:447
+#: members/admin.py:450
msgid "Request mail confirmation from selected registrations"
msgstr "Aufforderung zur Bestätigung der Email Adresse versenden"
-#: members/admin.py:454 members/admin.py:488
+#: members/admin.py:457 members/admin.py:531
#, python-format
msgid "Successfully confirmed %(name)s."
msgstr "Registrierung von %(name)s erfolgreich bestätigt."
-#: members/admin.py:458 members/admin.py:491
+#: members/admin.py:461 members/admin.py:534
#, python-format
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:463
+#: members/admin.py:466
msgid "Successfully confirmed multiple registrations."
msgstr "Erfolgreich mehrere Registrierungen bestätigt."
-#: members/admin.py:465
+#: members/admin.py:468
msgid ""
"Failed to confirm some registrations because of unconfirmed email addresses."
msgstr ""
"Einige Bestätigungen fehlgeschlagen, weil Emailadressen noch nicht bestätigt "
"sind."
-#: members/admin.py:466
+#: members/admin.py:469
msgid "Confirm selected registrations"
msgstr "Ausgewählte Registrierungen bestätigen"
-#: members/admin.py:482
+#: members/admin.py:492
+msgid "Demote selected registrations to waiters."
+msgstr "Ausgewählte Registrierungen zurück auf die Warteliste setzen."
+
+#: members/admin.py:508
+msgid "Demote member to waiter"
+msgstr "Ausgewählte Registrierung zurück auf die Warteliste setzen."
+
+#: members/admin.py:526
#, python-format
msgid "Successfully demoted %(name)s to waiter."
msgstr "%(name)s zurück auf die Warteliste gesetzt."
-#: members/admin.py:483
-msgid "Demote selected registrations to waiters."
-msgstr "Ausgewählte Registrierungen zurück auf die Warteliste setzen."
-
-#: members/admin.py:498 members/models.py:389 members/models.py:738
-#: members/models.py:1146
+#: members/admin.py:541 members/models.py:388 members/models.py:732
+#: members/models.py:1140
msgid "Group"
msgstr "Gruppe"
-#: members/admin.py:532
+#: members/admin.py:575
#, python-format
msgid "Successfully asked %(name)s to confirm their waiting status."
msgstr "Erfolgreich %(name)s aufgefordert den Wartelistenplatz zu bestätigen."
-#: members/admin.py:533
+#: members/admin.py:576
msgid "Ask selected waiters to confirm their waiting status"
msgstr "Wartende auffordern den Wartelistenplatz zu bestätigen"
-#: members/admin.py:542 members/admin.py:602
+#: members/admin.py:585 members/admin.py:645
msgid ""
"An error occurred while trying to invite said members. Please try again."
msgstr ""
"Beim Einladen dieser Personen ist ein Fehler aufgetreten. Bitte versuche es "
"nochmal. "
-#: members/admin.py:546 members/admin.py:607
+#: members/admin.py:589 members/admin.py:650
msgid ""
"The selected group does not have a contact email. Please first set a contact "
"email and then try again."
@@ -184,32 +188,32 @@ msgstr ""
"Die ausgewählte Gruppe hat keine Kontakt E-Mail Adresse. Bitte stelle eine "
"Kontakt E-Mail Adresse ein und versuche es erneut."
-#: members/admin.py:554 members/admin.py:614
+#: members/admin.py:597 members/admin.py:657
#, python-format
msgid "Successfully invited %(name)s to %(group)s."
msgstr "Erfolgreich %(name)s zu Gruppe %(group)s eingeladen."
-#: members/admin.py:558 members/admin.py:620
+#: members/admin.py:601 members/admin.py:663
msgid "Select group for invitation"
msgstr "Wähle Gruppe für Einladung aus"
-#: members/admin.py:565
+#: members/admin.py:608
msgid "Offer waiter a place in a group."
msgstr "Personen auf der Warteliste einen Gruppenplatz anbieten."
-#: members/admin.py:663
+#: members/admin.py:706
msgid "Difficulty"
msgstr "Schwierigkeit"
-#: members/admin.py:666
+#: members/admin.py:709
msgid "Tour type"
msgstr "Art der Tour"
-#: members/admin.py:669 members/models.py:956
+#: members/admin.py:712 members/models.py:950
msgid "Means of transportation"
msgstr "Verkehrsmittel"
-#: members/admin.py:695
+#: members/admin.py:738
msgid ""
"Please list here all expenses in relation with this excursion and upload "
"relevant bills. These have to be permanently stored for the application of "
@@ -222,7 +226,7 @@ msgstr ""
"einzelnen Posten wird dabei auf der LJP-Kostenübersicht angezeigt (sinnvoll "
"wären z.B. Anreise, Verpflegung, Material etc.)."
-#: members/admin.py:713
+#: members/admin.py:756
msgid ""
"Here you can work on a seminar report for applying for financial "
"contributions from Landesjugendplan (LJP). More information on creating a "
@@ -235,7 +239,7 @@ msgstr ""
"wahlweise nur TN-Liste und Kostenübersicht kannst du anschließend "
"herunterladen."
-#: members/admin.py:721
+#: members/admin.py:764
msgid ""
"Please list all participants (also youth leaders) of this excursion. Here "
"you can still make changes just before departure and hence generate the "
@@ -246,30 +250,30 @@ msgstr ""
"jederzeit die aktuelle Teilnehmer:innenliste für die Krisenintervention "
"generieren."
-#: members/admin.py:767
+#: members/admin.py:810
#, python-format
msgid "You are not allowed to view all members on note list %(name)s."
msgstr ""
"Du hast nicht die nötigen Rechte um alle Teilnehmer:innen der Notizliste "
"%(name)s anzusehen."
-#: members/admin.py:777
+#: members/admin.py:820
msgid "Generate PDF summary"
msgstr "Übersicht erstellen"
-#: members/admin.py:781
+#: members/admin.py:824
msgid "Full report"
msgstr "Vollständiger Seminarbericht"
-#: members/admin.py:782
+#: members/admin.py:825
msgid "Costs and participants only"
msgstr "Nur Kosten und Teilnehmende"
-#: members/admin.py:783
+#: members/admin.py:826
msgid "Mode"
msgstr "Modus"
-#: members/admin.py:797
+#: members/admin.py:840
msgid ""
"General information on your excursion. These are partly relevant for the "
"amount of financial compensation (means of transport, travel distance, etc.)."
@@ -278,38 +282,38 @@ msgstr ""
"teilweise relevant für die Zuschüsse aus dem Jugendetat (Verkehrsmittel, "
"Fahrstrecke in km)."
-#: members/admin.py:827
+#: members/admin.py:870
#, python-format
msgid "You are not allowed to view all members on excursion %(name)s."
msgstr ""
"Du hast nicht die nötigen Rechte um alle Teilnehmer:innen der Ausfahrt "
"%(name)s anzusehen."
-#: members/admin.py:835
+#: members/admin.py:878
msgid "Generate crisis intervention list"
msgstr "Kriseninterventionsliste erstellen"
-#: members/admin.py:843
+#: members/admin.py:886
msgid "Generate overview"
msgstr "Hinweise für Jugendleiter erstellen"
-#: members/admin.py:847 members/admin.py:870
+#: members/admin.py:890 members/admin.py:913
#: members/templates/admin/generate_seminar_report.html:21
msgid "Generate seminar report"
msgstr "Seminarbericht erstellen"
-#: members/admin.py:860
+#: members/admin.py:903
msgid "Please select a mode."
msgstr "Bitte wähle einen Modus aus."
-#: members/admin.py:864
+#: members/admin.py:907
msgid ""
"Full mode is only available, if the seminar report section is filled out."
msgstr ""
"Der vollständiger Modus ist nur verfügbar, wenn der Seminarbericht "
"ausgefüllt ist. "
-#: members/admin.py:882
+#: members/admin.py:925
msgid "Generate SJR application"
msgstr "SJR Antrag erstellen"
@@ -345,11 +349,11 @@ msgstr "Samstag"
msgid "Sunday"
msgstr "Sonntag"
-#: members/models.py:54 members/models.py:942
+#: members/models.py:54 members/models.py:936
msgid "Description"
msgstr "Beschreibung"
-#: members/models.py:60 members/models.py:934
+#: members/models.py:60 members/models.py:928
#: members/templates/members/change_member.html:18
msgid "Activity"
msgstr "Aktivität"
@@ -386,7 +390,7 @@ msgstr "Jugendleiter"
msgid "week day"
msgstr "Wochentag"
-#: members/models.py:77 members/models.py:1228
+#: members/models.py:77 members/models.py:1222
msgid "Starting time"
msgstr "Zeitpunkt"
@@ -395,12 +399,10 @@ msgid "Ending time"
msgstr "Endzeitpunkt"
#: members/models.py:80
-#, fuzzy
-#| msgid "Contact information"
msgid "Contact email"
-msgstr "Kontaktinformationen"
+msgstr "Kontakt Email"
-#: members/models.py:90 members/models.py:258
+#: members/models.py:90 members/models.py:257
msgid "group"
msgstr "Gruppe"
@@ -424,7 +426,7 @@ msgstr "Emailadresse bestätigt"
msgid "Email confirmation needed"
msgstr "Email Bestätigung erforderlich"
-#: members/models.py:188 members/models.py:232
+#: members/models.py:188 members/models.py:231
msgid "phone number"
msgstr "Telefonnummer (mobil)"
@@ -432,469 +434,470 @@ msgstr "Telefonnummer (mobil)"
msgid "birth date"
msgstr "Geburtsdatum"
-#: members/models.py:204
+#: members/models.py:203
msgid "Gender"
msgstr "Gender"
-#: members/models.py:205
+#: members/models.py:204
msgid "comments"
msgstr "Kommentare"
-#: members/models.py:229
+#: members/models.py:228
msgid "Alternative email confirmed"
msgstr "Alternative E-Mail Adresse bestätigt"
-#: members/models.py:233
+#: members/models.py:232
msgid "street and house number"
msgstr "Straße und Hausnummer"
-#: members/models.py:234
+#: members/models.py:233
msgid "Postcode"
msgstr "PLZ"
-#: members/models.py:236
+#: members/models.py:235
msgid "town"
msgstr "Stadt"
-#: members/models.py:237
+#: members/models.py:236
msgid "Address extra"
msgstr "Adress-Zusatz"
-#: members/models.py:238
+#: members/models.py:237
msgid "Country"
msgstr "Land"
-#: members/models.py:240
+#: members/models.py:239
msgid "Good conduct certificate presented on"
msgstr "Führungszeugnis vorgelegt am"
-#: members/models.py:241
+#: members/models.py:240
msgid "Joined on"
msgstr "Eintritt"
-#: members/models.py:242
+#: members/models.py:241
msgid "Left on"
msgstr "Austritt"
-#: members/models.py:243
+#: members/models.py:242
msgid "Has key"
msgstr "Hat Jugendraumschlüssel"
-#: members/models.py:244
+#: members/models.py:243
msgid "Has a free ticket for the climbing gym"
msgstr "Hat Freikarte für Kletterhalle"
-#: members/models.py:245
+#: members/models.py:244
msgid "DAV badge number"
msgstr "DAV Mitgliedsnummer"
-#: members/models.py:246
+#: members/models.py:245
msgid "Knows how to swim"
msgstr "Kann schwimmen"
-#: members/models.py:247
+#: members/models.py:246
msgid "Climbing badge"
msgstr "Kletterschein"
-#: members/models.py:248
+#: members/models.py:247
msgid "Alpine experience"
msgstr "Alpine Erfahrung"
-#: members/models.py:249
+#: members/models.py:248
msgid "Allergies"
msgstr "Allergieen"
-#: members/models.py:250
+#: members/models.py:249
msgid "Medication"
msgstr "Medikamente"
-#: members/models.py:251
+#: members/models.py:250
msgid "Tetanus vaccination"
msgstr "Tetanusimpfung"
-#: members/models.py:252
+#: members/models.py:251
msgid "Photos may be taken"
msgstr "Fotoerlaubnis"
-#: members/models.py:253
+#: members/models.py:252
msgid "Legal guardians"
msgstr "Erziehungsberechtigte"
-#: members/models.py:255
+#: members/models.py:254
msgid "May cancel a group appointment independently"
msgstr "Darf sich allein von der Gruppenstunde abmelden"
-#: members/models.py:262
+#: members/models.py:261
msgid "receives newsletter"
msgstr "Erhält den Newsletter"
-#: members/models.py:266
+#: members/models.py:265
msgid "created"
msgstr "erstellt"
-#: members/models.py:267
+#: members/models.py:266
msgid "Active"
msgstr "Aktiv"
-#: members/models.py:268
+#: members/models.py:267
msgid "registration form"
msgstr "Anmeldeformular"
-#: members/models.py:276
+#: members/models.py:275
msgid "image"
msgstr "Bild"
-#: members/models.py:285
+#: members/models.py:284
msgid "Echoed"
msgstr "Rückgemeldet"
-#: members/models.py:286
+#: members/models.py:285
msgid "Confirmed"
msgstr "Bestätigt"
-#: members/models.py:288
+#: members/models.py:287
msgid "Login data"
msgstr "Zugangsdaten"
-#: members/models.py:318
+#: members/models.py:317
msgid "Good conduct certificate valid"
msgstr "Führungszeugnis gültig"
-#: members/models.py:392
+#: members/models.py:391
msgid "member"
msgstr "Teilnehmer"
-#: members/models.py:393
+#: members/models.py:392
msgid "members"
msgstr "Teilnehmer"
-#: members/models.py:466
+#: members/models.py:460
#, python-format
msgid "New unconfirmed registration for group %(group)s"
msgstr "Neue unbestätigte Registrierung für Gruppe %(group)s"
-#: members/models.py:677
+#: members/models.py:671
msgid "Set login data for Kompass"
msgstr "Zugangsdaten für Kompass wählen"
-#: members/models.py:694 members/models.py:890 members/models.py:901
-#: members/models.py:1177 members/models.py:1184
+#: members/models.py:688 members/models.py:884 members/models.py:895
+#: members/models.py:1171 members/models.py:1178
msgid "Member"
msgstr "Teilnehmer"
-#: members/models.py:701
+#: members/models.py:695
msgid "Emergency contact"
msgstr "Notfallkontakt"
-#: members/models.py:702
+#: members/models.py:696
msgid "Emergency contacts"
msgstr "Notfallkontakte"
-#: members/models.py:722
+#: members/models.py:716
msgid "Unconfirmed registration"
msgstr "Unbestätigte Registrierung"
-#: members/models.py:723
+#: members/models.py:717
msgid "Unconfirmed registrations"
msgstr "Unbestätigte Registrierungen"
-#: members/models.py:737 members/models.py:782
+#: members/models.py:731 members/models.py:776
msgid "Waiter"
msgstr "Wartende Person"
-#: members/models.py:739
+#: members/models.py:733
msgid "Invitation date"
msgstr "Einladungsdatum"
-#: members/models.py:740 members/templates/members/reject_success.html:6
+#: members/models.py:734 members/templates/members/reject_success.html:6
#: members/templates/members/reject_success.html:11
msgid "Invitation rejected"
msgstr "Einladung abgelehnt"
-#: members/models.py:744
+#: members/models.py:738
msgid "Invitation to group"
msgstr "Gruppeneinladung"
-#: members/models.py:745
+#: members/models.py:739
msgid "Invitations to groups"
msgstr "Gruppeneinladungen"
-#: members/models.py:752
+#: members/models.py:746
msgid "Rejected"
msgstr "Abgelehnt"
-#: members/models.py:754
+#: members/models.py:748
msgid "Expired"
msgstr "Abgelaufen"
-#: members/models.py:756
+#: members/models.py:750
msgid "Undecided"
msgstr "Ausstehend"
-#: members/models.py:757
+#: members/models.py:751
msgid "Status"
msgstr "Status"
-#: members/models.py:768
+#: members/models.py:762
msgid "Do you want to tell us something else?"
msgstr "Möchtest du uns noch etwas mitteilen?"
-#: members/models.py:769
+#: members/models.py:763
msgid "application date"
msgstr "Bewerbungsdatum"
-#: members/models.py:771
+#: members/models.py:765
msgid "Last wait confirmation"
msgstr "Letzte Wartebestätigung"
-#: members/models.py:775
+#: members/models.py:769
msgid "Last reminder"
msgstr "Letzte Erinnerung"
-#: members/models.py:776
+#: members/models.py:770
msgid "Missed reminders"
msgstr "Verpasste Erinnerungen"
-#: members/models.py:783
+#: members/models.py:777
msgid "Waiters"
msgstr "Warteliste"
-#: members/models.py:807
+#: members/models.py:801
msgid "Waiting status confirmed"
msgstr "Wartelistenplatz bestätigt"
-#: members/models.py:814
+#: members/models.py:808
msgid "Waiting confirmation needed"
msgstr "Wartelistenplatzbestätigung erforderlich"
-#: members/models.py:869
+#: members/models.py:863
msgid "Invitation to trial group meeting"
msgstr "Einladung zu Schnupperstunde"
-#: members/models.py:881
+#: members/models.py:875
msgid "Unregistered from waiting list"
msgstr "Von der Warteliste abgemeldet"
-#: members/models.py:895
+#: members/models.py:889
msgid "Comment"
msgstr "Kommentar"
-#: members/models.py:902 members/models.py:1185
+#: members/models.py:896 members/models.py:1179
msgid "Members"
msgstr "Teilnehmer"
-#: members/models.py:936
+#: members/models.py:930
msgid "Place"
msgstr "Stützpunkt / Ort"
-#: members/models.py:937
+#: members/models.py:931
msgid "Destination (optional)"
msgstr "ggf. Ziel"
-#: members/models.py:939
+#: members/models.py:933
msgid "e.g. a peak"
msgstr "z.B. ein Gipfel"
-#: members/models.py:940
+#: members/models.py:934
msgid "Begin"
msgstr "Anfang"
-#: members/models.py:941
+#: members/models.py:935
msgid "End (optional)"
msgstr "Ende"
-#: members/models.py:944
+#: members/models.py:938
msgid "Groups"
msgstr "Gruppen"
-#: members/models.py:957
+#: members/models.py:951
msgid "Kilometers traveled"
msgstr "Fahrstrecke in Kilometer"
-#: members/models.py:960
+#: members/models.py:954
msgid "Categories"
msgstr "Kategorien"
-#: members/models.py:961
+#: members/models.py:955
msgid "easy"
msgstr "leicht"
-#: members/models.py:961
+#: members/models.py:955
msgid "medium"
msgstr "mittel"
-#: members/models.py:961
+#: members/models.py:955
msgid "hard"
msgstr "schwer"
-#: members/models.py:971 members/models.py:1208
+#: members/models.py:965 members/models.py:1202
msgid "Excursion"
msgstr "Ausfahrt"
-#: members/models.py:972
+#: members/models.py:966
msgid "Excursions"
msgstr "Ausfahrten"
-#: members/models.py:1123 members/models.py:1199 members/models.py:1415
+#: members/models.py:1117 members/models.py:1193 members/models.py:1409
msgid "Title"
msgstr "Titel"
-#: members/models.py:1124 members/models.py:1142 members/models.py:1416
+#: members/models.py:1118 members/models.py:1136 members/models.py:1410
msgid "Date"
msgstr "Datum"
-#: members/models.py:1143
+#: members/models.py:1137
msgid "Location"
msgstr "Ort"
-#: members/models.py:1144
+#: members/models.py:1138
msgid "Topic"
msgstr "Thema"
-#: members/models.py:1168
+#: members/models.py:1162
msgid "Jugendleiter"
msgstr "Jugendleiter"
-#: members/models.py:1171
+#: members/models.py:1165
msgid "Klettertreff"
msgstr "Klettertreff"
-#: members/models.py:1172
+#: members/models.py:1166
msgid "Klettertreffs"
msgstr "Klettertreffs"
-#: members/models.py:1190
+#: members/models.py:1184
msgid "Password"
msgstr "Passwort"
-#: members/models.py:1193
+#: members/models.py:1187
msgid "registration password"
msgstr "Registrierungspassort"
-#: members/models.py:1194
+#: members/models.py:1188
msgid "registration passwords"
msgstr "Registrierungspasswörter"
-#: members/models.py:1201
+#: members/models.py:1195
msgid "Alpinistic goals"
msgstr "Alpintechnische Ziele"
-#: members/models.py:1202
+#: members/models.py:1196
msgid "Pedagogic goals"
msgstr "Pädagogische Ziele"
-#: members/models.py:1203
+#: members/models.py:1197
msgid "Content and methods"
msgstr "Inhalte und Methoden"
-#: members/models.py:1204
+#: members/models.py:1198
msgid "Evaluation"
msgstr "Wertung"
-#: members/models.py:1205
+#: members/models.py:1199
msgid "Experiences and possible improvements"
msgstr "Erfahrungen und Verbesserungsvorschläge"
-#: members/models.py:1214 members/models.py:1235
+#: members/models.py:1208 members/models.py:1229
msgid "LJP Proposal"
msgstr "Seminarbericht"
-#: members/models.py:1215
+#: members/models.py:1209
msgid "LJP Proposals"
msgstr "Seminarberichte"
-#: members/models.py:1229
+#: members/models.py:1223
msgid "Duration in hours"
msgstr "Dauer in Stunden"
-#: members/models.py:1232
+#: members/models.py:1226
msgid "Activity and method"
msgstr "Art der Aktion inkl. Methode"
-#: members/models.py:1240
+#: members/models.py:1234
msgid "Intervention"
msgstr "Aktion"
-#: members/models.py:1241
+#: members/models.py:1235
msgid "Interventions"
msgstr "Aktionen"
-#: members/models.py:1343 members/models.py:1373
+#: members/models.py:1337 members/models.py:1367
msgid "May list members"
msgstr "Darf folgende Teilnehmer:innen listen"
-#: members/models.py:1345 members/models.py:1375
+#: members/models.py:1339 members/models.py:1369
msgid "May view members"
msgstr "Darf folgende Teilnehmer:innen anzeigen"
-#: members/models.py:1347 members/models.py:1377
+#: members/models.py:1341 members/models.py:1371
msgid "May change members"
msgstr "Darf folgende Teilnehmer:innen ändern"
-#: members/models.py:1349 members/models.py:1379
+#: members/models.py:1343 members/models.py:1373
msgid "May delete members"
msgstr "Darf folgende Teilnehmer:innen löschen"
-#: members/models.py:1353 members/models.py:1383
+#: members/models.py:1347 members/models.py:1377
msgid "May list members of groups"
msgstr "Darf Teilnehmer:innen folgender Gruppen listen"
-#: members/models.py:1355 members/models.py:1385
+#: members/models.py:1349 members/models.py:1379
msgid "May view members of groups"
msgstr "Darf Teilnehmer:innen folgender Gruppen anzeigen"
-#: members/models.py:1357 members/models.py:1387
+#: members/models.py:1351 members/models.py:1381
msgid "May change members of groups"
msgstr "Darf Teilnehmer:innen folgender Gruppen ändern"
-#: members/models.py:1359 members/models.py:1389
+#: members/models.py:1353 members/models.py:1383
msgid "May delete members of groups"
msgstr "Darf Teilnehmer:innen folgender Gruppen löschen"
-#: members/models.py:1362 members/models.py:1363 members/models.py:1366
+#: members/models.py:1356 members/models.py:1357 members/models.py:1360
msgid "Permissions"
msgstr "Berechtigungen"
-#: members/models.py:1392 members/models.py:1393 members/models.py:1396
+#: members/models.py:1386 members/models.py:1387 members/models.py:1390
msgid "Group permissions"
msgstr "Gruppenberechtigungen"
-#: members/models.py:1402
+#: members/models.py:1396
msgid "Permission needed"
msgstr "Freigabe erforderlich"
-#: members/models.py:1405
+#: members/models.py:1399
msgid "Training category"
msgstr "Fortbildungstyp"
-#: members/models.py:1406
+#: members/models.py:1400
msgid "Training categories"
msgstr "Fortbildungstypen"
-#: members/models.py:1417
+#: members/models.py:1411
msgid "Category"
msgstr "Kategorien"
-#: members/models.py:1418
+#: members/models.py:1412
msgid "Comments"
msgstr "Kommentar"
-#: members/models.py:1419
+#: members/models.py:1413
msgid "Participated"
msgstr "Teilgenommmen"
-#: members/models.py:1420
+#: members/models.py:1414
msgid "Passed"
msgstr "Bestanden"
-#: members/models.py:1423
+#: members/models.py:1417
msgid "Training"
msgstr "Fortbildung"
-#: members/models.py:1424
+#: members/models.py:1418
msgid "Trainings"
msgstr "Fortbildungen"
+#: members/templates/admin/demote_to_waiter.html:17
#: members/templates/admin/generate_seminar_report.html:17
#: members/templates/admin/invite_as_user.html:17
#: members/templates/admin/invite_for_group.html:17
@@ -903,6 +906,30 @@ msgstr "Fortbildungen"
msgid "Home"
msgstr "Start"
+#: members/templates/admin/demote_to_waiter.html:20
+#: members/templates/admin/demote_to_waiter.html:25
+msgid "Demote to waiter"
+msgstr "Zurück auf die Warteliste setzen"
+
+#: members/templates/admin/demote_to_waiter.html:27
+msgid ""
+"Do you want to demote the following unconfirmed registrations to waiters?"
+msgstr ""
+"Möchtest du die folgenden Personen zurück auf die Warteliste setzen?"
+
+#: members/templates/admin/demote_to_waiter.html:45
+msgid "Demote"
+msgstr "Zurück auf die Warteliste setzen"
+
+#: members/templates/admin/demote_to_waiter.html:46
+#: members/templates/admin/generate_seminar_report.html:54
+#: members/templates/admin/invite_as_user.html:37
+#: members/templates/admin/invite_for_group.html:52
+#: members/templates/admin/invite_selected_as_user.html:49
+#: members/templates/admin/invite_selected_for_group.html:53
+msgid "Cancel"
+msgstr "Abbrechen"
+
#: members/templates/admin/generate_seminar_report.html:27
msgid ""
"Here you can generate a seminar report suitable for the LJP. A report\n"
@@ -939,14 +966,6 @@ msgstr "Bitte wähle einen der obigen Modi."
msgid "Generate"
msgstr "Erstellen"
-#: members/templates/admin/generate_seminar_report.html:54
-#: members/templates/admin/invite_as_user.html:37
-#: members/templates/admin/invite_for_group.html:52
-#: members/templates/admin/invite_selected_as_user.html:49
-#: members/templates/admin/invite_selected_for_group.html:53
-msgid "Cancel"
-msgstr "Abbrechen"
-
#: members/templates/admin/invite_as_user.html:27
#, python-format
msgid ""
diff --git a/jdav_web/members/templates/admin/demote_to_waiter.html b/jdav_web/members/templates/admin/demote_to_waiter.html
new file mode 100644
index 0000000..661ddef
--- /dev/null
+++ b/jdav_web/members/templates/admin/demote_to_waiter.html
@@ -0,0 +1,48 @@
+{% extends "admin/base_site.html" %}
+{% load i18n admin_urls static %}
+
+{% block extrahead %}
+ {{ block.super }}
+ {{ media }}
+
+
+
+{% endblock %}
+
+{% block bodyclass %}{{ block.super }} app-{{ opts.app_label }} model-{{ opts.model_name }} invite-waiter
+{% endblock %}
+
+{% block breadcrumbs %}
+
+{% endblock %}
+
+{% block content %}
+{% translate "Demote to waiter" %}
+
+{% trans "Do you want to demote the following unconfirmed registrations to waiters?" %}
+
+
+
+ {% for member in queryset %}
+ -
+ {{ member }}
+
+ {% endfor %}
+
+
+
+
+{% endblock %}
diff --git a/jdav_web/templates/admin/members/memberunconfirmedproxy/change_form_object_tools.html b/jdav_web/templates/admin/members/memberunconfirmedproxy/change_form_object_tools.html
new file mode 100644
index 0000000..c3fbe46
--- /dev/null
+++ b/jdav_web/templates/admin/members/memberunconfirmedproxy/change_form_object_tools.html
@@ -0,0 +1,13 @@
+{% extends "admin/change_form_object_tools.html" %}
+{% load i18n admin_urls %}
+
+{% block object-tools-items %}
+
+
+ {% url opts|admin_urlname:'demote' original.pk|admin_urlquote as demote_url %}
+ {% trans 'Demote to waiter' %}
+
+
+{{block.super}}
+
+{% endblock %}