UPD: more registration staff on dav_events.
This commit is contained in:
79
dav_events/models/participant.py
Normal file
79
dav_events/models/participant.py
Normal file
@@ -0,0 +1,79 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
import datetime
|
||||
from django.db import models
|
||||
from django.utils import timezone
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
midnight = datetime.time(00, 00, 00)
|
||||
one_day = datetime.timedelta(1)
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class Participant(models.Model):
|
||||
event = models.ForeignKey('Event', related_name='participants')
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
position = models.IntegerField(verbose_name='Listennummer')
|
||||
|
||||
personal_names = models.CharField(max_length=1024,
|
||||
verbose_name=_('Vorname(n)'))
|
||||
family_names = models.CharField(max_length=1024,
|
||||
verbose_name=_('Familienname'))
|
||||
address = models.CharField(max_length=1024,
|
||||
verbose_name=_('Anschrift'),
|
||||
help_text=_('Straße, Hausnummer'))
|
||||
postal_code = models.CharField(max_length=254,
|
||||
verbose_name=_('Postleitzahl'))
|
||||
city = models.CharField(max_length=1024,
|
||||
verbose_name=_('Ort'))
|
||||
email_address = models.EmailField(verbose_name=_('E-Mail-Adresse'))
|
||||
phone_number = models.CharField(max_length=254,
|
||||
verbose_name=_('Telefonnummer'))
|
||||
dav_number = models.CharField(max_length=62,
|
||||
#validators=[DAVNumberValidator],
|
||||
verbose_name=_('DAV Mitgliednummer'))
|
||||
emergency_contact = models.TextField(blank=True,
|
||||
verbose_name=_('Notfall-Kontakt'))
|
||||
experience = models.TextField(blank=True,
|
||||
verbose_name=_('Erfahrung'))
|
||||
note = models.TextField(blank=True,
|
||||
verbose_name=_('Anmerkung'))
|
||||
|
||||
paid = models.BooleanField('Teilnehmerbeitrag bezahlt', default=False)
|
||||
|
||||
purge_at = models.DateTimeField()
|
||||
|
||||
class Meta:
|
||||
unique_together = (('event', 'position'), )
|
||||
verbose_name = _('Teilnehmer')
|
||||
verbose_name_plural = _('Teilnehmer')
|
||||
ordering = ['event', 'position']
|
||||
|
||||
def __str__(self):
|
||||
return '{position}. {name}'.format(
|
||||
position=self.position,
|
||||
name=self.get_full_name(),
|
||||
)
|
||||
|
||||
def get_full_name(self):
|
||||
return '{} {}'.format(self.personal_names, self.family_names)
|
||||
|
||||
def save(self, **kwargs):
|
||||
if not self.purge_at and self.event:
|
||||
self.purge_at = self.__class__.calc_purge_at(self.event)
|
||||
|
||||
super(Participant, self).save(**kwargs)
|
||||
|
||||
@staticmethod
|
||||
def calc_purge_at(event):
|
||||
if event.alt_last_day:
|
||||
last_day = event.alt_last_day
|
||||
elif event.last_day:
|
||||
last_day = event.last_day
|
||||
elif event.alt_first_day:
|
||||
last_day = event.alt_first_day
|
||||
else:
|
||||
last_day = event.first_day
|
||||
return timezone.make_aware(datetime.datetime.combine(last_day + one_day * 7, midnight))
|
||||
Reference in New Issue
Block a user