Support for reduced registration fee
This commit is contained in:
25
dav_events/migrations/0038_auto_20201209_1542.py
Normal file
25
dav_events/migrations/0038_auto_20201209_1542.py
Normal file
@@ -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'),
|
||||
),
|
||||
]
|
||||
@@ -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):
|
||||
|
||||
@@ -295,6 +295,12 @@ Das musst du selbst (per E-Mail oder telefonisch) machen.
|
||||
<span title="{{ registration.get_info }}">
|
||||
{% bootstrap_icon 'info-sign' %}
|
||||
</span>
|
||||
{% if registration.apply_reduced_fee %}
|
||||
|
||||
<span class="text-info">
|
||||
<strong>%</strong>{% bootstrap_icon 'piggy-bank' %} (reduzierte Gebühr)
|
||||
</span>
|
||||
{% endif %}
|
||||
</form>
|
||||
{% 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 %}
|
||||
|
||||
<button name="action" value="revoke_payment"
|
||||
title="{% trans 'Geldeingang wurde bestätigt' %} - {% trans 'Bestätigung des Geldeingangs zurückziehen' %}"
|
||||
class="btn btn-link no-padding">
|
||||
<span class="text-success">{% bootstrap_icon 'piggy-bank' %}</span>
|
||||
</button>
|
||||
<span class="text-success"><strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong></span><button
|
||||
name="action" value="revoke_payment"
|
||||
title="{% trans 'Geldeingang wurde bestätigt' %} - {% trans 'Bestätigung des Geldeingangs zurückziehen' %}"
|
||||
class="btn btn-link no-padding"><span class="text-success">{% bootstrap_icon 'piggy-bank' %}</span></button>
|
||||
{% elif event.charge and participant.paid %}
|
||||
|
||||
<span class="text-success" title="{% trans 'Geldeingang bestätigt' %}">
|
||||
{% bootstrap_icon 'piggy-bank' %}
|
||||
<strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong>{% bootstrap_icon 'piggy-bank' %}
|
||||
</span>
|
||||
{% elif event.charge and has_permission_payment %}
|
||||
|
||||
<button name="action" value="confirm_payment"
|
||||
title="{% trans 'Geldeingang bestätigen' %}"
|
||||
class="btn btn-link no-padding">
|
||||
<span class="text-danger">{% bootstrap_icon 'piggy-bank' %}</span>
|
||||
</button>
|
||||
<span class="text-danger"><strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong></span><button
|
||||
name="action" value="confirm_payment"
|
||||
title="{% trans 'Geldeingang bestätigen' %}"
|
||||
class="btn btn-link no-padding"><span class="text-danger">{% bootstrap_icon 'piggy-bank' %}</span></button>
|
||||
{% elif event.charge %}
|
||||
|
||||
<span class="text-danger" title="{% trans 'Geldeingang unbestätigt' %}">
|
||||
{% bootstrap_icon 'piggy-bank' %}
|
||||
<strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong>{% bootstrap_icon 'piggy-bank' %}
|
||||
</span>
|
||||
{% else %}
|
||||
<span class="hidden" title="{% trans 'Keine Teilnehmergebühr gefordert' %}">
|
||||
{% bootstrap_icon 'piggy-bank' %}
|
||||
<strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong>{% bootstrap_icon 'piggy-bank' %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</form>
|
||||
@@ -577,12 +581,12 @@ von Position {{ participant.position }} der Teilnehmerliste entfernt.
|
||||
{% if event.charge and participant.paid %}
|
||||
|
||||
<span class="text-success" title="{% trans 'Geldeingang bestätigt' %}">
|
||||
{% bootstrap_icon 'piggy-bank' %}
|
||||
<strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong>{% bootstrap_icon 'piggy-bank' %}
|
||||
</span>
|
||||
{% elif event.charge %}
|
||||
|
||||
<span class="text-danger" title="{% trans 'Geldeingang unbestätigt' %}">
|
||||
{% bootstrap_icon 'piggy-bank' %}
|
||||
<strong>{% if participant.apply_reduced_fee %}%{% else %} {% endif %}</strong>{% bootstrap_icon 'piggy-bank' %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
@@ -21,15 +21,20 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-6">
|
||||
{% bootstrap_field form.email_address %}
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="col-sm-6">
|
||||
{% bootstrap_field form.phone_number %}
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
{% bootstrap_field form.year_of_birth %}
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
{% bootstrap_field form.apply_reduced_fee %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user