from django.db import models from datetime import date # import pendulum class Jumper(models.Model): """Représente un gymnaste. Un gymnaste peut être actif ou inactif. """ class Meta: verbose_name = "Jumper" verbose_name_plural = "Jumpers" GENDER_CHOICES = ((0, "Male"), (1, "Female")) last_name = models.CharField(max_length=40, null=False, blank=False) first_name = models.CharField(max_length=25, null=False, blank=False) birthdate = models.DateField(verbose_name="Date de naissance") gender = models.PositiveSmallIntegerField( choices=GENDER_CHOICES, verbose_name="Sexe" ) is_active = models.BooleanField(default=1, verbose_name="Active") club = models.ForeignKey( "Club", null=True, on_delete=models.SET_NULL, related_name="jumpers" ) def __str__(self): return u"%s, %s" % (self.last_name, self.first_name) @property def age(self): """ Renvoie l'âge d'un gymnaste. """ today = date.today() return ( today.year - self.birthdate.year - ((today.month, today.day) < (self.birthdate.month, self.birthdate.day)) ) class Club(models.Model): """ Représente un club. Pour faciliter les filtres, un club peut être actif ou non. """ class Meta: verbose_name = "Club" verbose_name_plural = "Clubs" name = models.CharField(max_length=255, verbose_name="Name") city = models.CharField(max_length=255, verbose_name="City") acronym = models.CharField(max_length=4, verbose_name="Acronym") active = models.BooleanField(default=1, verbose_name="Active") def __str__(self): return "%s (%s) - %s" % (self.name, self.acronym, self.city)