diff --git a/dav_event_office/templates/dav_event_office/event_detail.html b/dav_event_office/templates/dav_event_office/event_detail.html
index 3ab06c4..fa4c9e2 100644
--- a/dav_event_office/templates/dav_event_office/event_detail.html
+++ b/dav_event_office/templates/dav_event_office/event_detail.html
@@ -210,6 +210,17 @@
@@ -380,14 +401,16 @@
{% if event.charge and participant.paid %}
-
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% bootstrap_icon 'piggy-bank' %}
-
+ % {% bootstrap_icon 'piggy-bank' %}
{% elif event.charge %}
-
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% bootstrap_icon 'piggy-bank' %}
-
+ % {% bootstrap_icon 'piggy-bank' %}
{% endif %}
diff --git a/dav_event_office/templates/dav_event_office/participant_list.html b/dav_event_office/templates/dav_event_office/participant_list.html
index 99c2439..c9a9e71 100644
--- a/dav_event_office/templates/dav_event_office/participant_list.html
+++ b/dav_event_office/templates/dav_event_office/participant_list.html
@@ -71,24 +71,37 @@
diff --git a/dav_event_office/views.py b/dav_event_office/views.py
index c44a136..148d3b1 100644
--- a/dav_event_office/views.py
+++ b/dav_event_office/views.py
@@ -53,6 +53,11 @@ class ParticipantListView(generic.ListView):
participant = get_object_or_404(Participant, pk=participant_id)
participant.paid = False
participant.save()
+ elif action == 'toggle_reduced_fee':
+ participant_id = request.POST.get('id')
+ participant = get_object_or_404(Participant, pk=participant_id)
+ participant.apply_reduced_fee = not participant.apply_reduced_fee
+ participant.save()
else:
messages.error(request, 'unsupported action: {}'.format(action))
return HttpResponseRedirect(reverse('dav_event_office:participant-list'))
diff --git a/dav_events/forms/__init__.py b/dav_events/forms/__init__.py
index a13db64..c7f2392 100644
--- a/dav_events/forms/__init__.py
+++ b/dav_events/forms/__init__.py
@@ -1,3 +1,4 @@
from . import generic
from . import events
from . import participant
+from . import registration
diff --git a/dav_events/forms/participant.py b/dav_events/forms/participant.py
index 92dd23c..e471173 100644
--- a/dav_events/forms/participant.py
+++ b/dav_events/forms/participant.py
@@ -7,7 +7,9 @@ from ..models import Participant
class ParticipantForm(forms.ModelForm):
class Meta:
model = Participant
- exclude = ['event', 'created_at', 'position', 'purge_at']
+ exclude = ['event', 'created_at', 'position',
+ 'privacy_policy', 'privacy_policy_accepted',
+ 'paid', 'purge_at']
widgets = {
'emergency_contact': forms.Textarea(attrs={'rows': 4}),
'experience': forms.Textarea(attrs={'rows': 5}),
diff --git a/dav_events/forms/registration.py b/dav_events/forms/registration.py
new file mode 100644
index 0000000..2d28b2b
--- /dev/null
+++ b/dav_events/forms/registration.py
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+from django import forms
+from django.utils.translation import ugettext_lazy as _
+
+
+class RegistrationResponseForm(forms.Form):
+ apply_reduced_fee = forms.BooleanField(required=False,
+ label=_(u'Reduzierte Teilnahmegebühr'))
diff --git a/dav_events/migrations/0039_auto_20201215_1155.py b/dav_events/migrations/0039_auto_20201215_1155.py
new file mode 100644
index 0000000..42d664c
--- /dev/null
+++ b/dav_events/migrations/0039_auto_20201215_1155.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.29 on 2020-12-15 10:55
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('dav_events', '0038_auto_20201209_1542'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='participant',
+ name='apply_reduced_fee',
+ field=models.BooleanField(default=False, help_text='Für Jugendliche und Junioren (bis zum vollendeten 25. Lebensjahr), sowie Mitglieder mit geringen finanziellen Mitteln (Nachweis durch "Karlsruher Pass"), wird die Teilnahmegebühr auf 50% ermäßigt.', verbose_name='Antrag auf reduzierte Teilnahmegebühr'),
+ ),
+ migrations.AlterField(
+ model_name='participant',
+ name='year_of_birth',
+ field=models.IntegerField(help_text='Vierstellige Jahreszahl', verbose_name='Geburtsjahr'),
+ ),
+ migrations.AlterField(
+ model_name='trashedparticipant',
+ name='apply_reduced_fee',
+ field=models.BooleanField(default=False, help_text='Für Jugendliche und Junioren (bis zum vollendeten 25. Lebensjahr), sowie Mitglieder mit geringen finanziellen Mitteln (Nachweis durch "Karlsruher Pass"), wird die Teilnahmegebühr auf 50% ermäßigt.', verbose_name='Antrag auf reduzierte Teilnahmegebühr'),
+ ),
+ migrations.AlterField(
+ model_name='trashedparticipant',
+ name='year_of_birth',
+ field=models.IntegerField(help_text='Vierstellige Jahreszahl', verbose_name='Geburtsjahr'),
+ ),
+ ]
diff --git a/dav_events/migrations/0040_auto_20201216_1712.py b/dav_events/migrations/0040_auto_20201216_1712.py
new file mode 100644
index 0000000..d844345
--- /dev/null
+++ b/dav_events/migrations/0040_auto_20201216_1712.py
@@ -0,0 +1,35 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.29 on 2020-12-16 16:12
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('dav_events', '0039_auto_20201215_1155'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='participant',
+ name='privacy_policy',
+ field=models.TextField(blank=True, verbose_name='Erklärung zur Datenspeicherung'),
+ ),
+ migrations.AddField(
+ model_name='participant',
+ name='privacy_policy_accepted',
+ field=models.BooleanField(default=False, verbose_name='Einwilligung zur Datenspeicherung'),
+ ),
+ migrations.AddField(
+ model_name='trashedparticipant',
+ name='privacy_policy',
+ field=models.TextField(blank=True, verbose_name='Erklärung zur Datenspeicherung'),
+ ),
+ migrations.AddField(
+ model_name='trashedparticipant',
+ name='privacy_policy_accepted',
+ field=models.BooleanField(default=False, verbose_name='Einwilligung zur Datenspeicherung'),
+ ),
+ ]
diff --git a/dav_events/models/participant.py b/dav_events/models/participant.py
index 01af818..da0b692 100644
--- a/dav_events/models/participant.py
+++ b/dav_events/models/participant.py
@@ -53,6 +53,11 @@ class AbstractParticipant(models.Model):
verbose_name=_('Anmerkung'),
help_text=_('Kann frei gelassen werden.'))
+ privacy_policy = models.TextField(blank=True,
+ verbose_name=_('Erklärung zur Datenspeicherung'))
+ privacy_policy_accepted = models.BooleanField(default=False,
+ verbose_name=_('Einwilligung zur Datenspeicherung'))
+
paid = models.BooleanField('Teilnehmerbeitrag bezahlt', default=False)
purge_at = models.DateTimeField()
diff --git a/dav_events/templates/dav_events/event_create/SummaryForm.html b/dav_events/templates/dav_events/event_create/SummaryForm.html
index 4c925a4..7bf5704 100644
--- a/dav_events/templates/dav_events/event_create/SummaryForm.html
+++ b/dav_events/templates/dav_events/event_create/SummaryForm.html
@@ -40,11 +40,9 @@
{% bootstrap_icon 'remove' %}
{% trans 'Abbrechen' %}
-
{% endbuttons %}
{% endblock form-buttons %}
diff --git a/dav_events/templates/dav_events/event_registrations.html b/dav_events/templates/dav_events/event_registrations.html
index b8b3278..531557e 100644
--- a/dav_events/templates/dav_events/event_registrations.html
+++ b/dav_events/templates/dav_events/event_registrations.html
@@ -272,10 +272,17 @@ Das musst du selbst (per E-Mail oder telefonisch) machen.
{% csrf_token %}
{% if has_permission_update_participants %}
+ {% if registration.apply_reduced_fee %}
+
+ {% bootstrap_icon 'plus-sign' %}
+
+ {% else %}
{% bootstrap_icon 'plus-sign' %}
+ {% endif %}
@@ -298,7 +305,7 @@ Das musst du selbst (per E-Mail oder telefonisch) machen.
{% if registration.apply_reduced_fee %}
- % {% bootstrap_icon 'piggy-bank' %} (reduzierte Gebühr)
+ % {% bootstrap_icon 'piggy-bank' %} (reduzierte Gebühr)
{% endif %}
@@ -392,30 +399,35 @@ Wichtig: das System verschickt keine Bestätigung an dich oder den neuen Teilneh
{% endif %}
{% if event.charge and participant.paid and has_permission_payment %}
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} % {% bootstrap_icon 'piggy-bank' %}
{% elif event.charge and participant.paid %}
-
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% bootstrap_icon 'piggy-bank' %}
-
+ % {% bootstrap_icon 'piggy-bank' %}
{% elif event.charge and has_permission_payment %}
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} % {% bootstrap_icon 'piggy-bank' %}
{% elif event.charge %}
-
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% bootstrap_icon 'piggy-bank' %}
-
+ % {% bootstrap_icon 'piggy-bank' %}
{% else %}
-
- {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% bootstrap_icon 'piggy-bank' %}
-
+ % {% bootstrap_icon 'piggy-bank' %}
{% endif %}
@@ -580,14 +592,16 @@ von Position {{ participant.position }} der Teilnehmerliste entfernt.
{% if event.charge and participant.paid %}
-
+
+ Hallo {{ registration.event.trainer_firstname }},
+
+
+ du hast sicherlich schon gesehen, dass {{ registration.get_full_name }} angekreuzt hat,
+ die reduzierte Teilnahmegebühr zahlen zu wollen.
+
+
+ Für Jugendliche und Junioren sowie Mitglieder mit geringen finanziellen Mitteln (Nachweis durch Karlsruher Paß)
+ wird die Teilnahmegebühr auf 50% ermäßigt.
+
+
+ Wenn ihr bereits darüber gesprochen habt und ihr übereingekommen seid,
+ dass {{ registration.personal_names }} doch den vollen Betrag zahlen soll,
+ dann kannst du unten den Haken entfernen.
+
+
+