Files
TijdVoorDeTest/tvdt/quiz/models/season.py
2024-12-11 23:28:08 +01:00

45 lines
1.2 KiB
Python

from django.contrib.auth import get_user_model
from django.db import models
from django.utils.translation import gettext_lazy as _
from django_stubs_ext.db.models import TypedModelMeta
from ..helpers import generate_season_code
User = get_user_model()
class Season(models.Model):
name = models.CharField(max_length=64, verbose_name=_("name"))
active_quiz = models.ForeignKey(
"Quiz",
on_delete=models.SET_NULL,
null=True,
blank=True,
default=None,
verbose_name=_("active quiz"),
related_name="+",
)
season_code = models.CharField(
max_length=5, default=generate_season_code, verbose_name=_("season code")
)
preregister_candidates = models.BooleanField(
default=True, verbose_name=_("preregister candidates")
)
owner = models.ManyToManyField(
User,
verbose_name=_("owners"),
related_name="seasons",
)
def renew_season_code(self) -> str:
self.season_code = generate_season_code()
self.save()
return self.season_code
def __str__(self) -> str:
return self.name
class Meta(TypedModelMeta):
verbose_name = _("season")
verbose_name_plural = _("seasons")