You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.5 KiB
Python
78 lines
2.5 KiB
Python
from datetime import datetime
|
|
import hashlib
|
|
from django.db import models
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
|
|
class Group(models.Model):
|
|
"""
|
|
Represents one group of the association
|
|
e.g: J1, J2, Jugendleiter, etc.
|
|
"""
|
|
name = models.CharField(max_length=20, verbose_name=_('name')) # e.g: J1
|
|
min_age = models.IntegerField(default=5,
|
|
verbose_name=_('minimum age (years)'))
|
|
|
|
def __str__(self):
|
|
"""String representation"""
|
|
return self.name
|
|
|
|
class Meta:
|
|
verbose_name = _('group')
|
|
verbose_name_plural = _('groups')
|
|
|
|
|
|
class Member(models.Model):
|
|
"""
|
|
Represents a member of the association
|
|
Might be a member of different groups: e.g. J1, J2, Jugendleiter, etc.
|
|
"""
|
|
prename = models.CharField(max_length=20, verbose_name=_('prename'))
|
|
lastname = models.CharField(max_length=20, verbose_name=_('last name'))
|
|
email = models.EmailField(max_length=100, default="")
|
|
birth_date = models.DateField(_('birth date')) # to determine the age
|
|
group = models.ManyToManyField(Group)
|
|
gets_newsletter = models.BooleanField(_('receives newsletter'),
|
|
default=True)
|
|
key = models.CharField(max_length=32, default="")
|
|
|
|
def __str__(self):
|
|
"""String representation"""
|
|
return self.name
|
|
|
|
def save(self, *args, **kwargs):
|
|
if len(self.key) == 0:
|
|
self.key = hashlib.md5((self.prename + self.lastname +
|
|
self.email).encode()).hexdigest()
|
|
super(Member, self).save(*args, **kwargs)
|
|
|
|
@property
|
|
def name(self):
|
|
"""Returning whole name (prename + lastname)"""
|
|
return "{0} {1}".format(self.prename, self.lastname)
|
|
|
|
class Meta:
|
|
verbose_name = _('member')
|
|
verbose_name_plural = _('members')
|
|
|
|
|
|
class MemberList(models.Model):
|
|
"""Lets the user create a list of members in pdf format. """
|
|
name = models.CharField(verbose_name='List Name', default='',
|
|
max_length=50)
|
|
date = models.DateField(default=datetime.today)
|
|
comment = models.TextField(_('Comments'), default='')
|
|
|
|
def __str__(self):
|
|
"""String represenation"""
|
|
return self.name
|
|
|
|
|
|
class MemberOnList(models.Model):
|
|
"""
|
|
Connects members to a list of members.
|
|
"""
|
|
member = models.ForeignKey(Member)
|
|
memberlist = models.ForeignKey(MemberList)
|
|
comments = models.TextField(_('Comment'), default='')
|