Source code for oioioi.teachers.models

from django.conf import settings
from django.contrib.auth.models import User
from django.core.exceptions import ImproperlyConfigured
from django.db import models

from django.utils.translation import gettext_lazy as _

from oioioi.base.utils import generate_key
from oioioi.base.utils.deps import check_django_app_dependencies
from oioioi.contests.models import Contest

check_django_app_dependencies(__name__, ['oioioi.participants'])

if 'oioioi.teachers.auth.TeacherAuthBackend' not in settings.AUTHENTICATION_BACKENDS:
    raise ImproperlyConfigured(
        "When using teacher module you have to activate TeacherAuthBackend"
    )



[docs]class Teacher(models.Model):
[docs] user = models.OneToOneField( User, primary_key=True, verbose_name=_("user"), on_delete=models.CASCADE )
[docs] is_active = models.BooleanField(default=False, verbose_name=_("active"))
[docs] school = models.CharField(max_length=255, verbose_name=_("school"))
[docs] join_date = models.DateField(auto_now_add=True)
[docs] class Meta(object):
[docs] permissions = (('teacher', _("Is a teacher")),)
[docs] def __str__(self): return str(self.user)
[docs]class ContestTeacher(models.Model):
[docs] contest = models.ForeignKey(Contest, on_delete=models.CASCADE)
[docs] teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
[docs] class Meta(object):
[docs] unique_together = ('contest', 'teacher')
[docs] def __str__(self): return u'%s/%s' % (self.contest_id, self.teacher.user)
[docs]class RegistrationConfig(models.Model):
[docs] contest = models.OneToOneField(Contest, primary_key=True, on_delete=models.CASCADE)
[docs] is_active_pupil = models.BooleanField(default=True)
[docs] is_active_teacher = models.BooleanField(default=True)
[docs] pupil_key = models.CharField(max_length=40)
[docs] teacher_key = models.CharField(max_length=40)
def __init__(self, *args, **kwargs): super(RegistrationConfig, self).__init__(*args, **kwargs) if not self.teacher_key: self.teacher_key = generate_key() if not self.pupil_key: self.pupil_key = generate_key()