Add a kind of trashbin for registrations and participants
All checks were successful
buildbot/tox Build done.

This commit is contained in:
2020-12-03 11:47:41 +01:00
parent f2f0df3ab3
commit 94595f4785
13 changed files with 484 additions and 93 deletions

View File

@@ -215,6 +215,8 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
participants = event.participants.all()
context['participants'] = participants
participants_trash = event.trashed_participants.all()
context['participants_trash'] = participants_trash
if participants.count() > 1:
email_list = [u'"{}" <{}>'.format(p.get_full_name(), p.email_address) for p in participants]
@@ -231,9 +233,11 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
context['registrations_support'] = registrations_support
if registrations_support:
registrations_all = event.registrations.all()
registrations_pending = registrations_all.filter(answered=False)
context['registrations_pending'] = registrations_pending
registrations_pending = registrations_all.filter(~Q(status__answered=True))
registrations_answered = registrations_all.filter(status__answered=True)
context['registrations_all'] = registrations_all
context['registrations_pending'] = registrations_pending
context['registrations_answered'] = registrations_answered
context['registrations'] = registrations_all
return context
@@ -289,13 +293,11 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
'purge_at': registration.purge_at,
}
participant = models.Participant.objects.create(**data)
registration.answered = True
registration.save()
registration.accepted()
messages.success(request, _(u'Teilnehmer hinzugefügt: {}'.format(participant.get_full_name())))
def _reject_registration(self, registration):
registration.answered = True
registration.save()
registration.rejected()
def _swap_participants_position(self, participant1, participant2):
event = participant1.event
@@ -357,18 +359,21 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
participant = event.participants.get(id=participant_id)
participant.paid = False
participant.save()
elif action == 'remove_participant':
elif action == 'trash_participant':
self.enforce_permission(event, permission='update-participants')
participant_id = request.POST.get('id')
participant = event.participants.get(id=participant_id)
full_name = participant.get_full_name()
position = participant.position
participants_below = event.participants.filter(position__gt=participant.position)
data = participant.get_data_dict()
trashed = models.TrashedParticipant.objects.create(**data)
participant.delete()
qs = event.participants.filter(position__gt=position)
for participant in qs:
for participant in participants_below:
participant.position -= 1
participant.save()
messages.success(request, _(u'Teilnehmer gelöscht: {}'.format(full_name)))
messages.success(request, _(u'Teilnehmer in den Papierkorb verschoben: {}'.format(trashed.get_full_name())))
elif action == 'moveup_participant':
self.enforce_permission(event, permission='update-participants')
participant_id = request.POST.get('id')