members/waitinglist: preserve waitinglist application date

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

@ -543,17 +543,8 @@ class MemberUnconfirmedAdmin(CommonAdminMixin, admin.ModelAdmin):
def demote_to_waiter(self, request, queryset):
for member in queryset:
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})
member.demote_to_waiter()
messages.success(request, _("Successfully demoted %(name)s to waiter.") % {'name': member.name})
def response_change(self, request, member):
if "_confirm" in request.POST:

@ -0,0 +1,18 @@
# Generated by Django 4.0.1 on 2024-12-15 18:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('members', '0030_alter_member_options'),
]
operations = [
migrations.AddField(
model_name='member',
name='waitinglist_application_date',
field=models.DateTimeField(blank=True, help_text='If the person registered from the waitinglist, this is their application date.', null=True, verbose_name='waitinglist application date'),
),
]

@ -301,6 +301,9 @@ class Member(Person):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL,
verbose_name=_('Login data'))
invite_as_user_key = models.CharField(max_length=32, default="")
waitinglist_application_date = models.DateTimeField(verbose_name=_('waitinglist application date'),
null=True, blank=True,
help_text=_('If the person registered from the waitinglist, this is their application date.'))
objects = MemberManager()
@ -452,6 +455,9 @@ class Member(Person):
if self.email == waiter.email:
self.confirmed_mail = waiter.confirmed_mail
self.confirm_mail_key = waiter.confirm_mail_key
# store waitinglist application date in member, this will be used
# if the member is later demoted to waiter again
self.waitinglist_application_date = waiter.application_date
if self.alternative_email:
self.confirmed_alternative_mail = False
self.save()
@ -719,6 +725,23 @@ class Member(Person):
"""Returns a queryset of freizeiten that this member is a youth leader of."""
return Freizeit.objects.filter(jugendleiter__pk=self.pk)[:limit]
def demote_to_waiter(self):
"""Demote this member to a waiter by creating a waiter from the data and removing
this member."""
waiter = MemberWaitingList(prename=self.prename,
lastname=self.lastname,
email=self.email,
birth_date=self.birth_date,
gender=self.gender,
comments=self.comments,
confirmed_mail=self.confirmed_mail,
confirm_mail_key=self.confirm_mail_key)
# if this member was created from the waitinglist, keep the original application date
if self.waitinglist_application_date:
waiter.application_date = self.waitinglist_application_date
waiter.save()
self.delete()
class EmergencyContact(ContactWithPhoneNumber):
"""

Loading…
Cancel
Save