UPD: dav_events: improved registrations page.

This commit is contained in:
2019-06-05 13:57:11 +02:00
parent 32d350b2ab
commit 939828a32f
2 changed files with 44 additions and 26 deletions

View File

@@ -146,18 +146,19 @@
<h3 class="panel-title">{{ event }}</h3>
</div>
<div class="panel-body">
<div class="panel-group" id="form-accordion" role="tablist" aria-multiselectable="true">
<div class="panel-group" id="form-accordion-general" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div id="headingForm1" class="panel-heading" role="tab">
<div id="headingFormGeneral" class="panel-heading" role="tab">
<h4 class="panel-title">
<a role="button" href="#collapseForm1" data-toggle="collapse" data-parent="#accordion"
aria-expanded="true" aria-controls="collapseForm1">
<a role="button" href="#collapseFormGeneral"
data-toggle="collapse" data-parent="#form-accordion-general"
aria-expanded="true" aria-controls="collapseFormGeneral">
{% trans 'Allgemeines' %}
</a>
</h4>
</div>
<div id="collapseForm1" class="panel-collapse collapse in"
role="tabpanel" aria-labelledby="headingForm1">
<div id="collapseFormGeneral" class="panel-collapse collapse in"
role="tabpanel" aria-labelledby="headingFormGeneral">
<div class="panel-body">
<div class="row">
<div class="col-sm-3">
@@ -218,20 +219,22 @@
</div>
</div>
</div>
<hr />
<h4>{% trans 'Teilnehmer' %}</h4>
</div>
<hr />
<h4>{% trans 'Teilnehmer' %}</h4>
<div class="panel-group" id="form-accordion-participants" role="tablist" aria-multiselectable="true">
{% if registrations_support %}
<div class="panel panel-info">
<div id="headingRegistrations" class="panel-heading" role="tab">
<h5 class="panel-title">
<a role="button" href="#collapseRegistrations"
data-toggle="collapse" data-parent="#accordion"
data-toggle="collapse"
aria-expanded="true" aria-controls="collapseRegistrations">
<span class="caret"></span>&nbsp;&nbsp;{% trans 'Anmeldungen' %}
</a>
</h5>
</div>
<div id="collapseRegistrations" class="panel-collapse collapse"
<div id="collapseRegistrations" class="panel-collapse collapse {% if registrations %}in{% endif %}"
role="tabpanel" aria-labelledby="headingRegistrations">
<div class="panel-body">
{% for registration in registrations %}
@@ -278,7 +281,7 @@
<div id="headingAddParticipant" class="panel-heading" role="tab">
<h5 class="panel-title">
<a role="button" href="#collapseAddParticipant"
data-toggle="collapse" data-parent="#accordion"
data-toggle="collapse"
aria-expanded="true" aria-controls="collapseAddParticipant">
<span class="caret"></span>&nbsp;&nbsp;{% trans 'weiteren Teilnehmer eintragen' %}
</a>
@@ -300,21 +303,24 @@
</div>
</div>
{% for form in participant_formset %}
{% with participant_id=form.instance.id %}
{% with position=form.instance.position %}
{% with participant=form.instance %}
{% with position=participant.position %}
<div class="panel {% if event.max_participants and position > event.max_participant %}panel-warning{% else %}panel-default{% endif %}">
<div id="headingParticipant_{{ participant_id }}" class="panel-heading" role="tab">
<div id="headingParticipant_{{ participant.id }}" class="panel-heading" role="tab">
<h5 class="panel-title">
<a role="button" href="#collapseParticipant_{{ participant_id }}"
data-toggle="collapse" data-parent="#accordion"
aria-expanded="true" aria-controls="collapseParticipant_{{ participant_id }}">
<a role="button" href="#collapseParticipant_{{ participant.id }}"
data-toggle="collapse"
aria-expanded="true" aria-controls="collapseParticipant_{{ participant.id }}">
<span class="caret"></span>&nbsp;&nbsp;
{{ position }}. {{ form.instance.get_full_name }}
{{ position }}. {{ participant.get_full_name }}
</a>
<small>
(<a href="mailto:{{ participant.email_address }}">{{ participant.email_address }}</a>, {{ participant.phone_number }})
</small>
<div class="pull-right">
<form action="" method="post" class="form-inline">
{% csrf_token %}
<input type="hidden" name="id" value="{{ participant_id }}">
<input type="hidden" name="id" value="{{ participant.id }}">
<button name="action" value="moveup_participant"
title="{% trans 'Nach oben verschieben' %}"
class="btn btn-link no-padding {% if forloop.first %}invisible{% endif %}">
@@ -326,12 +332,12 @@
<span class="text-info">{% bootstrap_icon 'triangle-bottom' %}</span>
</button>
<button name="action" value="remove_participant"
title="{% trans 'Teilnehmer löschen' %}"
title="{% trans 'Teilnehmer löschen' %} ({% trans 'Spätestens am' %} {{ participant.purge_at|date:'d. F Y'}})"
class="btn btn-link no-padding">
<span class="text-danger">{% bootstrap_icon 'remove-circle' %}</span>
</button>
&nbsp;
{% if form.instance.paid %}
{% if participant.paid %}
<span class="text-success" title="Geldeingang bestätigt">
{% bootstrap_icon 'piggy-bank' %}
</span>
@@ -344,15 +350,15 @@
</div>
</h5>
</div>
<div id="collapseParticipant_{{ participant_id }}"
<div id="collapseParticipant_{{ participant.id }}"
class="panel-collapse collapse {% if form.errors %}in{% endif %}"
role="tabpanel" aria-labelledby="headingParticipant_{{ participant_id }}">
role="tabpanel" aria-labelledby="headingParticipant_{{ participant.id }}">
<div class="panel-body">
{% bootstrap_form_errors form %}
<form action="" method="post">
{% csrf_token %}
<input type="hidden" name="form_prefix" value="{{ form.prefix }}">
<input type="hidden" name="{{ form.prefix }}-id" value="{{ participant_id }}">
<input type="hidden" name="{{ form.prefix }}-id" value="{{ participant.id }}">
{% include './includes/participant_form.html' %}
<button type="submit" name="action" value="update_participant" class="btn btn-success">
{% bootstrap_icon 'hdd' %} {% trans 'Speichern' %}
@@ -364,6 +370,14 @@
{% endwith %}
{% endwith %}
{% endfor %}
{% if participant_emails %}
<div class="panel panel-default">
<div class="panel-body">
<strong>{% trans 'E-Mail-Adressen' %}</strong> <small>(für Copy-Paste)</small><br />
<div class="well well-sm">{{ participant_emails }}</div>
</div>
</div>
{% endif %}
</div>
</div>
</div>

View File

@@ -214,6 +214,11 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
participants = event.participants.all()
context['participants'] = participants
if participants.count() > 1:
email_list = ['"{}" <{}>'.format(p.get_full_name(), p.email_address) for p in participants]
email_list.sort()
context['participant_emails'] = ', '.join(email_list)
if 'participant_formset' not in context:
context['participant_formset'] = self.get_participant_formset()
@@ -223,8 +228,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView):
registrations_support = hasattr(event, 'registrations')
context['registrations_support'] = registrations_support
if registrations_support:
# registrations = event.registrations.filter(answered=False)
registrations = event.registrations.all()
registrations = event.registrations.filter(answered=False)
context['registrations'] = registrations
return context