plateforme-corres2math/apps/registration/models.py

89 lines
2.1 KiB
Python

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")