UPD: try to make trainers happy. registration is is now hex coded. made
clear, that attendance is not guaranteed.
This commit is contained in:
@@ -71,16 +71,33 @@ class Registration(models.Model):
|
|||||||
verbose_name=_('Einwilligung zur Datenspeicherung'))
|
verbose_name=_('Einwilligung zur Datenspeicherung'))
|
||||||
purge_at = models.DateTimeField()
|
purge_at = models.DateTimeField()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def pk2hexstr(pk):
|
||||||
|
return hex(pk * 113)[2:] # 113 has no meaning, but it produce nice looking hex codes.
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def hexstr2pk(hexstr):
|
||||||
|
return int('0x' + hexstr, 0) // 113
|
||||||
|
|
||||||
|
@property
|
||||||
|
def hexstr(self):
|
||||||
|
if not self.pk:
|
||||||
|
return None
|
||||||
|
return self.pk2hexstr(self.pk)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = _('Anmeldung')
|
verbose_name = _('Anmeldung')
|
||||||
verbose_name_plural = _('Anmeldungen')
|
verbose_name_plural = _('Anmeldungen')
|
||||||
ordering = ['created_at']
|
ordering = ['created_at']
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return '{number} - {name} ({created} - {purge})'.format(number=self.event.get_number(),
|
return '{eventnumber} - {name} ({registration_id} - {created} - {purge})'.format(
|
||||||
|
eventnumber=self.event.get_number(),
|
||||||
name=self.get_full_name(),
|
name=self.get_full_name(),
|
||||||
|
registration_id=self.hexstr,
|
||||||
created=self.created_at.strftime('%d.%m.%Y %H:%M'),
|
created=self.created_at.strftime('%d.%m.%Y %H:%M'),
|
||||||
purge=self.purge_at.strftime('%d.%m.%Y %H:%M'))
|
purge=self.purge_at.strftime('%d.%m.%Y %H:%M')
|
||||||
|
)
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dav_registration:registered')
|
return reverse('dav_registration:registered')
|
||||||
|
|||||||
@@ -3,15 +3,17 @@ Hallo {{ registration.get_full_name }},
|
|||||||
wir haben deine Anmeldung zur Veranstaltung
|
wir haben deine Anmeldung zur Veranstaltung
|
||||||
{{ event.number }} - {{ event.title }}
|
{{ event.number }} - {{ event.title }}
|
||||||
an den/die Tourenleiter/in {{ event.get_trainer_full_name }} weitergegeben.
|
an den/die Tourenleiter/in {{ event.get_trainer_full_name }} weitergegeben.
|
||||||
{{ event.trainer_firstname }} wird sich bei dir melden und dir mitteilen,
|
|
||||||
ob du teilnehmen kannst oder nicht.
|
!!! Diese E-Mail ist noch keine Zusage zur Teilnahme !!!
|
||||||
|
|
||||||
|
{{ event.trainer_firstname }} wird sich bei dir melden und dir zu- oder absagen.
|
||||||
|
|
||||||
========================================================================
|
========================================================================
|
||||||
Veranstaltung: {{ event.number }} - {{ event.title }}
|
Veranstaltung: {{ event.number }} - {{ event.title }}
|
||||||
Datum: {{ event.get_formated_date }}
|
Datum: {{ event.get_formated_date }}
|
||||||
Tourenleitung: {{ event.get_trainer_full_name }}
|
Tourenleitung: {{ event.get_trainer_full_name }}
|
||||||
Anmeldezeitpunkt: {{ registration.created_at|date:'l, d. F Y, G:i' }}
|
Anmeldezeitpunkt: {{ registration.created_at|date:'l, d. F Y, G:i' }}
|
||||||
Referenz-Nr: {{ registration.id }}
|
Vorgang: {{ registration.hexstr }} (wird nur gebraucht, wenn irgendwas schief geht)
|
||||||
|
|
||||||
Personendaten
|
Personendaten
|
||||||
-------------
|
-------------
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ Anmeldung zu deiner Veranstaltung
|
|||||||
{{ event.number }} - {{ event.title }}
|
{{ event.number }} - {{ event.title }}
|
||||||
========================================================================
|
========================================================================
|
||||||
Anmeldezeitpunkt: {{ registration.created_at|date:'l, d. F Y, G:i' }}
|
Anmeldezeitpunkt: {{ registration.created_at|date:'l, d. F Y, G:i' }}
|
||||||
Referenz-Nr: {{ registration.id }}
|
Vorgang: {{ registration.hexstr }}
|
||||||
|
|
||||||
Teilnehmer*in:
|
Teilnehmer*in:
|
||||||
{{ registration.get_full_name }}
|
{{ registration.get_full_name }}
|
||||||
|
|||||||
@@ -10,11 +10,13 @@
|
|||||||
<p>
|
<p>
|
||||||
Du solltest in Kürze eine E-Mail von uns mit deinen Anmeldedaten erhalten.
|
Du solltest in Kürze eine E-Mail von uns mit deinen Anmeldedaten erhalten.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p class="lead">
|
||||||
Diese E-Mail gilt <strong>noch nicht als Zusage</strong> zur Teilnahme.
|
Diese Nachricht gilt <strong>noch nicht als Zusage</strong> zur Teilnahme.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Die Tourenleitung wurde über deine Anmeldung informiert und wird sich bei dir melden.
|
Ob du teilnehmen kannst, muss die Tourenleitung entscheiden.
|
||||||
|
Möglicherweise sind bereits alle Teilnehmerplätze vergeben.
|
||||||
|
Der/die Tourenleiter/in wurde über deine Anmeldung informiert und wird sich bei dir melden.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
{% if object %}
|
{% if object %}
|
||||||
@@ -26,9 +28,9 @@
|
|||||||
<li class="list-group-item">Datum: {{ object.event.get_formated_date }}</li>
|
<li class="list-group-item">Datum: {{ object.event.get_formated_date }}</li>
|
||||||
<li class="list-group-item">Tourenleitung: {{ object.event.get_trainer_full_name }} (<a href="{{ object.event.trainer_email }}">{{ object.event.trainer_email }}</a>)</li>
|
<li class="list-group-item">Tourenleitung: {{ object.event.get_trainer_full_name }} (<a href="{{ object.event.trainer_email }}">{{ object.event.trainer_email }}</a>)</li>
|
||||||
<li class="list-group-item">Anmeldezeitpunkt: {{ object.created_at|date:'l, d. F Y, G:i' }}</li>
|
<li class="list-group-item">Anmeldezeitpunkt: {{ object.created_at|date:'l, d. F Y, G:i' }}</li>
|
||||||
<li class="list-group-item">Anmeldenummer: {{ object.pk }}</li>
|
|
||||||
<li class="list-group-item">Speicherung bis: {{ object.purge_at|date:'l, d. F Y' }}</li>
|
<li class="list-group-item">Speicherung bis: {{ object.purge_at|date:'l, d. F Y' }}</li>
|
||||||
<li class="list-group-item">Teilnehmer*in: {{ object.get_full_name }} ({{ object.email_address }})</li>
|
<li class="list-group-item">Teilnehmer*in: {{ object.get_full_name }} ({{ object.email_address }})</li>
|
||||||
|
<li class="list-group-item">Vorgang: {{ object.hexstr }} <small>(wird nur gebraucht, wenn irgendwas schief geht)</small></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
|||||||
@@ -87,7 +87,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="checkbox">
|
<div class="checkbox">
|
||||||
<label>
|
<label>
|
||||||
<input type="checkbox" name="privacy_policy_accepted" {% if form.privacy_policy_accepted.value %}checked="checked"{% endif %}">
|
<input type="checkbox" name="privacy_policy_accepted" {% if form.privacy_policy_accepted.value %}checked="checked"{% endif %}>
|
||||||
{% trans 'Ich willige in die oben erläuterte Datenspeicherung ein.' %}
|
{% trans 'Ich willige in die oben erläuterte Datenspeicherung ein.' %}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
@@ -104,6 +104,28 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endblock form-fields-visible %}
|
{% endblock form-fields-visible %}
|
||||||
{% endblock form-fields %}
|
{% endblock form-fields %}
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h5>Teilnahmevorbehalt</h5>
|
||||||
|
<div class="well well-sm">
|
||||||
|
<p><small>
|
||||||
|
<strong>
|
||||||
|
Die erfolgreiche Anmeldung bedeutet nicht, dass du auf jeden Fall
|
||||||
|
an der Tour oder dem Kurs teilnehmen kannst.
|
||||||
|
</strong>
|
||||||
|
<br />
|
||||||
|
Bei vielen Veranstaltungen wollen mehr Mitglieder teilnehmen,
|
||||||
|
als der oder die Tourenleiter/innen mitnehmen können.
|
||||||
|
Zudem muss die Tourenleitung erst noch entscheiden, ob du
|
||||||
|
die erforderlichen Anforderungen zur Teilnahme erfüllst
|
||||||
|
(evtl. wird er/sie sich dafür bei dir melden).
|
||||||
|
Die Plätze werden daher nicht unbedingt nach dem first-come-first-serve-Prinzip vergeben.
|
||||||
|
<br/>
|
||||||
|
Der/die Tourenleiter/in wird dir also persönlich per E-Mail zu- oder absagen.
|
||||||
|
</small></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="row"> </div>
|
<div class="row"> </div>
|
||||||
{% block form-buttons %}
|
{% block form-buttons %}
|
||||||
{% buttons %}
|
{% buttons %}
|
||||||
|
|||||||
@@ -16,15 +16,17 @@ MAIL_SELF_TEMPLATE = """Hallo {participant_full_name},
|
|||||||
wir haben deine Anmeldung zur Veranstaltung
|
wir haben deine Anmeldung zur Veranstaltung
|
||||||
{event_number} - {event_title}
|
{event_number} - {event_title}
|
||||||
an den/die Tourenleiter/in {trainer_full_name} weitergegeben.
|
an den/die Tourenleiter/in {trainer_full_name} weitergegeben.
|
||||||
{trainer_first_name} wird sich bei dir melden und dir mitteilen,
|
|
||||||
ob du teilnehmen kannst oder nicht.
|
!!! Diese E-Mail ist noch keine Zusage zur Teilnahme !!!
|
||||||
|
|
||||||
|
{trainer_first_name} wird sich bei dir melden und dir zu- oder absagen.
|
||||||
|
|
||||||
========================================================================
|
========================================================================
|
||||||
Veranstaltung: {event_number} - {event_title}
|
Veranstaltung: {event_number} - {event_title}
|
||||||
Datum: {event_formated_date}
|
Datum: {event_formated_date}
|
||||||
Tourenleitung: {trainer_full_name}
|
Tourenleitung: {trainer_full_name}
|
||||||
Anmeldezeitpunkt: {registration_at}
|
Anmeldezeitpunkt: {registration_at}
|
||||||
Referenz-Nr: {registration_id}
|
Vorgang: {registration_hexstr} (wird nur gebraucht, wenn irgendwas schief geht)
|
||||||
|
|
||||||
Personendaten
|
Personendaten
|
||||||
-------------
|
-------------
|
||||||
@@ -59,7 +61,7 @@ Anmeldung zu deiner Veranstaltung
|
|||||||
{event_number} - {event_title}
|
{event_number} - {event_title}
|
||||||
========================================================================
|
========================================================================
|
||||||
Anmeldezeitpunkt: {registration_at}
|
Anmeldezeitpunkt: {registration_at}
|
||||||
Referenz-Nr: {registration_id}
|
Vorgang: {registration_hexstr}
|
||||||
|
|
||||||
Teilnehmer*in:
|
Teilnehmer*in:
|
||||||
{participant_full_name}
|
{participant_full_name}
|
||||||
@@ -128,7 +130,7 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
|
|||||||
event_formated_date=event.get_formated_date(),
|
event_formated_date=event.get_formated_date(),
|
||||||
trainer_full_name=trainer.get_full_name(),
|
trainer_full_name=trainer.get_full_name(),
|
||||||
trainer_first_name=trainer.first_name,
|
trainer_first_name=trainer.first_name,
|
||||||
registration_id=registration.id,
|
registration_hexstr=registration.hexstr,
|
||||||
registration_at=format_datetime(registration.created_at, 'EEEE, dd. MMMM yyyy, H:mm', locale=locale),
|
registration_at=format_datetime(registration.created_at, 'EEEE, dd. MMMM yyyy, H:mm', locale=locale),
|
||||||
purge_at=format_datetime(registration.purge_at, 'EEEE, dd. MMMM yyyy', locale=locale),
|
purge_at=format_datetime(registration.purge_at, 'EEEE, dd. MMMM yyyy', locale=locale),
|
||||||
)
|
)
|
||||||
@@ -223,7 +225,7 @@ class EmailsTestCase(EmailTestMixin, EventMixin, RegistrationMixin, TestCase):
|
|||||||
event_title=event.title,
|
event_title=event.title,
|
||||||
event_formated_date=event.get_formated_date(),
|
event_formated_date=event.get_formated_date(),
|
||||||
trainer_first_name=trainer.first_name,
|
trainer_first_name=trainer.first_name,
|
||||||
registration_id=registration.id,
|
registration_hexstr=registration.hexstr,
|
||||||
registration_at=format_datetime(registration.created_at, 'EEEE, dd. MMMM yyyy, H:mm', locale=locale),
|
registration_at=format_datetime(registration.created_at, 'EEEE, dd. MMMM yyyy, H:mm', locale=locale),
|
||||||
purge_at=format_datetime(registration.purge_at, 'EEEE, dd. MMMM yyyy', locale=locale),
|
purge_at=format_datetime(registration.purge_at, 'EEEE, dd. MMMM yyyy', locale=locale),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -66,16 +66,7 @@ class RegistrationView(generic.CreateView):
|
|||||||
model = Registration
|
model = Registration
|
||||||
form_class = RegistrationForm
|
form_class = RegistrationForm
|
||||||
initial = {
|
initial = {
|
||||||
# 'personal_names': u'Jens',
|
|
||||||
# 'family_names': u'Kleineheismann',
|
|
||||||
# 'address': u'Am Fächerbad 2',
|
|
||||||
# 'postal_code': u'76131',
|
|
||||||
# 'city': u'Karlsruhe',
|
|
||||||
# 'email_address': 'heinzel@alpenverein-karlsruhe.de',
|
|
||||||
# 'note': u'Nur ein Test.',
|
|
||||||
'dav_number': '131/00/',
|
'dav_number': '131/00/',
|
||||||
# 'experience': u'Ich kann alles.',
|
|
||||||
# 'privacy_policy_accepted': True,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user