from django.db import models from django.contrib.auth.models import User from solo.models import SingletonModel class GroupChoice(models.Model): TEAMS = ( ('DT', 'DevTeam'), ('NET', 'NeTeam'), ('ST', 'SecurITeam'), ('SYS', 'SysAdmin'), ('HAT', 'Hallgatói Tudásbázis'), ('N', 'None'), ) choice = models.CharField( max_length=10, choices=TEAMS, default='N', unique=True) def __str__(self): return self.choice class Profile(models.Model): ROLES = ( ('Staff', 'Staff'), ('Applicant', 'Applicant'), ('Student', 'Student'), ('Denied', 'Denied'), ) join_date = models.DateTimeField(auto_now_add=True, editable=False) updated_at = models.DateTimeField(auto_now=True, editable=False) user = models.OneToOneField( User, related_name='profile', on_delete=models.CASCADE ) motivation_about = models.TextField(blank=True, default='') motivation_profession = models.TextField(blank=True, default='') motivation_exercise = models.TextField(blank=True, default='') nick = models.CharField(max_length=15, blank=True, default='') signed = models.BooleanField(default=False, null=False) groups = models.ManyToManyField( GroupChoice, related_name='profiles', blank=True) role = models.CharField(max_length=10, choices=ROLES, default='Applicant') @property def score(self): return self.events_visitor.all().count() * 10 + \ self.solution.filter(accepted=True).count() * 50 @property def full_name(self): return self.user.get_full_name() def __str__(self): return self.full_name class Deadline(SingletonModel): deadline = models.DateTimeField(null=True) text = models.CharField(max_length=50, blank=True, default='')