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 194d0c5..3ab06c4 100644 --- a/dav_event_office/templates/dav_event_office/event_detail.html +++ b/dav_event_office/templates/dav_event_office/event_detail.html @@ -161,6 +161,12 @@ {% bootstrap_icon 'info-sign' %} + {% if registration.apply_reduced_fee %} +   + + %{% bootstrap_icon 'piggy-bank' %} (reduzierte Gebühr) + + {% endif %} {% empty %} {% trans 'Keine Anmeldungen vorhanden' %} @@ -223,31 +229,29 @@ {% endif %} {% if event.charge and participant.paid and has_permission_payment %}   - + {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% elif event.charge and participant.paid %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% elif event.charge and has_permission_payment %}   - + {% if participant.apply_reduced_fee %}%{% elif participant.created_at|date:'U' < '1608764400' %}? {% else %} {% endif %} {% elif event.charge %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% elif participant.created_at|date:'U' < '1608764400' %}? {% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% else %} {% endif %} @@ -377,12 +381,12 @@ {% if event.charge and participant.paid %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% elif event.charge %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% endif %} diff --git a/dav_event_office/templates/dav_event_office/includes/participant_form.html b/dav_event_office/templates/dav_event_office/includes/participant_form.html index 9279bd4..535d068 100644 --- a/dav_event_office/templates/dav_event_office/includes/participant_form.html +++ b/dav_event_office/templates/dav_event_office/includes/participant_form.html @@ -28,6 +28,14 @@ {% bootstrap_field form.phone_number %} +
+
+ {% bootstrap_field form.year_of_birth %} +
+
+ {% bootstrap_field form.apply_reduced_fee %} +
+
{% bootstrap_field form.dav_number %} 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 f747551..99c2439 100644 --- a/dav_event_office/templates/dav_event_office/participant_list.html +++ b/dav_event_office/templates/dav_event_office/participant_list.html @@ -24,7 +24,7 @@ {% trans 'Nachname' %} {% trans 'Vorname' %} {% trans 'Mitgliedsnummer' %} - {% trans 'Teilnehmergebühr' %} + {% trans 'Teilnahmegebühr' %} @@ -32,7 +32,7 @@ - + @@ -62,7 +62,7 @@ {% endif %} + data-search="{% if not event.charge %}{% trans 'Grau' %}{% elif participant.paid %}{% trans 'Grün' %}{% else %}{% trans 'Rot' %}{% endif %} {% if participant.apply_reduced_fee %}%{% endif %} {{ event.charge|floatformat:'-2' }}">
{% bootstrap_icon 'envelope' %} {% if event.charge and participant.paid %} - + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}   - ({{ event.charge|floatformat:'-2' }} €) + ({{ event.charge|floatformat:'-2' }}{% if participant.apply_reduced_fee %} / 2{% endif %} €) {% elif event.charge %} - + {% if participant.apply_reduced_fee %}%{% elif participant.created_at|date:'U' < '1608764400' %}? {% else %} {% endif %}   - ({{ event.charge|floatformat:'-2' }} €) + ({{ event.charge|floatformat:'-2' }}{% if participant.apply_reduced_fee %} / 2{% endif %} €) {% else %} - {% bootstrap_icon 'piggy-bank' %} + {% bootstrap_icon 'piggy-bank' %} {% endif %} diff --git a/dav_events/migrations/0038_auto_20201209_1542.py b/dav_events/migrations/0038_auto_20201209_1542.py new file mode 100644 index 0000000..cc6e05f --- /dev/null +++ b/dav_events/migrations/0038_auto_20201209_1542.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-12-09 14:42 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dav_events', '0037_auto_20201209_1327'), + ] + + operations = [ + migrations.AddField( + model_name='participant', + name='apply_reduced_fee', + field=models.BooleanField(default=False, verbose_name='Antrag auf reduzierte Teilnahmegebühr'), + ), + migrations.AddField( + model_name='trashedparticipant', + name='apply_reduced_fee', + field=models.BooleanField(default=False, verbose_name='Antrag auf reduzierte Teilnahmegebühr'), + ), + ] diff --git a/dav_events/models/participant.py b/dav_events/models/participant.py index 1f49736..01af818 100644 --- a/dav_events/models/participant.py +++ b/dav_events/models/participant.py @@ -28,7 +28,15 @@ class AbstractParticipant(models.Model): email_address = models.EmailField(verbose_name=_('E-Mail-Adresse')) phone_number = models.CharField(max_length=254, verbose_name=_('Telefonnummer')) - year_of_birth = models.IntegerField(verbose_name=_('Geburtsjahr')) + year_of_birth = models.IntegerField(verbose_name=_('Geburtsjahr'), + help_text=_('Vierstellige Jahreszahl')) + apply_reduced_fee = models.BooleanField(default=False, + verbose_name=_('Antrag auf reduzierte Teilnahmegebühr'), + 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.')) dav_member = models.BooleanField(default=True, verbose_name=_('DAV Mitglied'), help_text=_('In Ausnahmefällen nehmen wir auch Nichtmitglieder mit.')) @@ -69,6 +77,7 @@ class AbstractParticipant(models.Model): DAV Mitglied: {dav_info} Jahrgang: {year_of_birth} (ungefähres Alter: {approx_age}) + Antrag auf reduzierte Teilnehmergebühr: {apply_reduced_fee_yesno} Notfallkontakt: {emergency_contact} @@ -81,6 +90,11 @@ class AbstractParticipant(models.Model): else: dav_info = self.dav_number + if self.apply_reduced_fee: + apply_reduced_fee_yesno = _('Ja') + else: + apply_reduced_fee_yesno = _('Nein') + return text.format( fullname=self.get_full_name(), address=self.address, @@ -89,6 +103,7 @@ class AbstractParticipant(models.Model): dav_info=dav_info, year_of_birth=self.year_of_birth, approx_age=self.approx_age(), + apply_reduced_fee_yesno=apply_reduced_fee_yesno, emergency_contact=self.emergency_contact, note=self.note, ) @@ -96,7 +111,8 @@ class AbstractParticipant(models.Model): def get_data_dict(self): data = {} for field in self._meta.fields: - data[field.name] = getattr(self, field.name) + if not field.primary_key: + data[field.name] = getattr(self, field.name) return data def clean(self): diff --git a/dav_events/templates/dav_events/event_registrations.html b/dav_events/templates/dav_events/event_registrations.html index 7d5b397..b8b3278 100644 --- a/dav_events/templates/dav_events/event_registrations.html +++ b/dav_events/templates/dav_events/event_registrations.html @@ -295,6 +295,12 @@ Das musst du selbst (per E-Mail oder telefonisch) machen. {% bootstrap_icon 'info-sign' %} + {% if registration.apply_reduced_fee %} +   + + %{% bootstrap_icon 'piggy-bank' %} (reduzierte Gebühr) + + {% endif %} {% empty %} {% trans 'Keine unbearbeiteten Anmeldungen vorhanden' %} @@ -386,31 +392,29 @@ 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 %} {% elif event.charge and participant.paid %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% elif event.charge and has_permission_payment %}   - + {% if participant.apply_reduced_fee %}%{% else %} {% endif %} {% elif event.charge %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% else %} {% endif %} @@ -577,12 +581,12 @@ von Position {{ participant.position }} der Teilnehmerliste entfernt. {% if event.charge and participant.paid %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% elif event.charge %}   - {% bootstrap_icon 'piggy-bank' %} + {% if participant.apply_reduced_fee %}%{% else %} {% endif %}{% bootstrap_icon 'piggy-bank' %} {% endif %} diff --git a/dav_events/templates/dav_events/includes/participant_form.html b/dav_events/templates/dav_events/includes/participant_form.html index 837b7b6..535d068 100644 --- a/dav_events/templates/dav_events/includes/participant_form.html +++ b/dav_events/templates/dav_events/includes/participant_form.html @@ -21,15 +21,20 @@
-
+
{% bootstrap_field form.email_address %}
-
+
{% bootstrap_field form.phone_number %}
-
+
+
+
{% bootstrap_field form.year_of_birth %}
+
+ {% bootstrap_field form.apply_reduced_fee %} +
diff --git a/dav_events/views/events.py b/dav_events/views/events.py index 80cdf49..c234771 100644 --- a/dav_events/views/events.py +++ b/dav_events/views/events.py @@ -285,6 +285,7 @@ class EventRegistrationsView(EventPermissionMixin, generic.DetailView): 'city': registration.city, 'email_address': registration.email_address, 'year_of_birth': registration.year_of_birth, + 'apply_reduced_fee': registration.apply_reduced_fee, 'phone_number': registration.phone_number, 'dav_member': registration.dav_member, 'dav_number': registration.dav_number, diff --git a/dav_registration/forms.py b/dav_registration/forms.py index da93756..bbeb9ee 100644 --- a/dav_registration/forms.py +++ b/dav_registration/forms.py @@ -25,6 +25,9 @@ class RegistrationForm(forms.ModelForm): 'experience': forms.Textarea(attrs={'rows': 5}), 'note': forms.Textarea(attrs={'rows': 5}), } + labels = { + 'apply_reduced_fee': _('Ich bin noch keine 25 Jahre alt oder besitze einen "Karlsruher Pass".'), + } def clean_year_of_birth(self): now = datetime.datetime.now() diff --git a/dav_registration/migrations/0010_registration_apply_reduced_fee.py b/dav_registration/migrations/0010_registration_apply_reduced_fee.py new file mode 100644 index 0000000..213f62f --- /dev/null +++ b/dav_registration/migrations/0010_registration_apply_reduced_fee.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-12-09 14:16 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dav_registration', '0009_registration_year_of_birth'), + ] + + operations = [ + migrations.AddField( + model_name='registration', + 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'), + ), + ] diff --git a/dav_registration/models.py b/dav_registration/models.py index c864e6a..fa82b73 100644 --- a/dav_registration/models.py +++ b/dav_registration/models.py @@ -46,6 +46,14 @@ class Registration(models.Model): ' Darum brauchen wir die vierstellige Jahreszahl,' ' des Jahres in dem du geboren bist (zb. 1991).')) + apply_reduced_fee = models.BooleanField(default=False, + verbose_name=_('Antrag auf reduzierte Teilnahmegebühr'), + 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.')) + dav_member = models.BooleanField(default=True, verbose_name=_('DAV Mitglied')) dav_number = models.CharField(max_length=62, @@ -125,6 +133,7 @@ class Registration(models.Model): DAV Mitglied: {dav_info} Jahrgang: {year_of_birth} (ungefähres Alter: {approx_age}) +Antrag auf reduzierte Teilnehmergebühr: {apply_reduced_fee_yesno} Erfahrung: {experience} @@ -137,6 +146,11 @@ Anmerkung: else: dav_info = self.dav_number + if self.apply_reduced_fee: + apply_reduced_fee_yesno = _('Ja') + else: + apply_reduced_fee_yesno = _('Nein') + return text.format( fullname=self.get_full_name(), address=self.address, @@ -145,6 +159,7 @@ Anmerkung: dav_info=dav_info, year_of_birth=self.year_of_birth, approx_age=self.approx_age(), + apply_reduced_fee_yesno=apply_reduced_fee_yesno, experience=self.experience, note=self.note, ) diff --git a/dav_registration/templates/dav_registration/emails/inform_self.txt b/dav_registration/templates/dav_registration/emails/inform_self.txt index ca5925e..bd719a2 100644 --- a/dav_registration/templates/dav_registration/emails/inform_self.txt +++ b/dav_registration/templates/dav_registration/emails/inform_self.txt @@ -23,6 +23,7 @@ Personendaten Telefon: {{ registration.phone_number }} E-Mail: {{ registration.email_address }} Jahrgang: {{ registration.year_of_birth }} +Antrag auf reduzierte Teilnahmegebühr: {% if registration.apply_reduced_fee %}Ja{% else %}Nein{% endif %} {% if registration.dav_member %}DAV Mitgliedsnummer: {{ registration.dav_number }}{% else %}DAV Mitglied: Nein{% endif %} Notfall-Kontakt diff --git a/dav_registration/templates/dav_registration/emails/inform_trainer.txt b/dav_registration/templates/dav_registration/emails/inform_trainer.txt index 7edd9b3..ddd8969 100644 --- a/dav_registration/templates/dav_registration/emails/inform_trainer.txt +++ b/dav_registration/templates/dav_registration/emails/inform_trainer.txt @@ -12,6 +12,7 @@ Teilnehmer*in: {{ registration.phone_number }} {{ registration.email_address }} {% if registration.dav_member %}{{ registration.dav_number }}{% else %}Nicht DAV Mitglied{% endif %} +Antrag auf reduzierte Teilnahmegebühr: {% if registration.apply_reduced_fee %}Ja{% else %}Nein{% endif %} Notfall-Kontakt: {% if registration.emergency_contact %}{{ registration.emergency_contact }}{% else %}-{% endif %} diff --git a/dav_registration/templates/dav_registration/registration_form.html b/dav_registration/templates/dav_registration/registration_form.html index 322efb6..0fddd3e 100644 --- a/dav_registration/templates/dav_registration/registration_form.html +++ b/dav_registration/templates/dav_registration/registration_form.html @@ -32,8 +32,19 @@ } } + function year_of_birth_handler() { + var junior_age = 25 + var year_now = new Date().getFullYear() + var year_of_birth = parseInt($("#id_year_of_birth").val()); + if(year_of_birth > (year_now - junior_age)) { + $("#id_apply_reduced_fee").prop('checked', true); + } + } + $(document).ready(function(){ init_not_dav_member_handler(); + var e = $("#id_year_of_birth"); + e.change(function(){ year_of_birth_handler(); }); }); {% endblock head-additional %} @@ -74,10 +85,10 @@
-
+
{% bootstrap_field form.postal_code %}
-
+
{% bootstrap_field form.city %}
@@ -93,6 +104,12 @@
{% bootstrap_field form.year_of_birth %}
+
+ Antrag auf reduzierte Teilnahmegebühr + {% bootstrap_field form.apply_reduced_fee %} +
+
+
{% bootstrap_field form.dav_number %}
@@ -100,11 +117,6 @@ Nichtmitglieder {% bootstrap_field form.not_dav_member %}
-
-
-
- -
{% bootstrap_field form.emergency_contact %}