import random import string 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 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") ) 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")