from django.db import models from django.utils.translation import gettext_lazy as _ from polymorphic.models import PolymorphicModel class Registration(PolymorphicModel): user = models.OneToOneField( "auth.User", on_delete=models.CASCADE, verbose_name=_("user"), ) team = models.ForeignKey( "participation.Team", on_delete=models.PROTECT, null=True, default=None, verbose_name=_("team"), ) give_contact_to_animath = models.BooleanField( default=False, verbose_name=_("Grant Animath to contact me in the future about other actions"), ) @property def type(self): raise NotImplementedError def __str__(self): return _("registration of {first_name} {last_name}")\ .format(first_name=self.user.first_name, last_name=self.user.last_name) class Meta: verbose_name = _("registration") verbose_name_plural = _("registrations") class StudentRegistration(Registration): student_class = models.IntegerField( choices=[ (12, _("12th grade")), (11, _("11th grade")), (10, _("10th grade or lower")), ], verbose_name=_("student class"), ) school = models.CharField( max_length=255, verbose_name=_("school"), ) @property def type(self): return _("student") class Meta: verbose_name = _("student registration") verbose_name_plural = _("student registrations") class CoachRegistration(Registration): professional_activity = models.TextField( verbose_name=_("professional activity"), ) @property def type(self): return _("coach") class Meta: verbose_name = _("coach registration") verbose_name_plural = _("coach registrations") class AdminRegistration(Registration): role = models.TextField( verbose_name=_("role of the administrator"), ) @property def type(self): return _("admin") class Meta: verbose_name = _("admin registration") verbose_name_plural = _("admin registrations")