import uuid from django.contrib.auth.models import AbstractUser from django.db import models from django.utils import timezone import datetime class CustomUser(AbstractUser): birth_date = models.DateField(null=True, blank=True) player_number = models.IntegerField(default=999) team = models.ForeignKey('clubs.Team', on_delete=models.SET_NULL, null=True, blank=True, related_name='players') parents = models.ManyToManyField('self', symmetrical=False, blank=True, related_name='children') is_verified = models.BooleanField(default=False) verification_code = models.UUIDField(null=True, blank=True, unique=True, editable=False) # New users are not active until they verify and set a password is_active = models.BooleanField(default=False) @property def age(self): if not self.birth_date: return None today = datetime.date.today() return today.year - self.birth_date.year - ((today.month, today.day) < (self.birth_date.month, self.birth_date.day)) class AbsencePeriod(models.Model): user = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='absence_periods') start_date = models.DateField() end_date = models.DateField()