Skip to content
Snippets Groups Projects
models.py 2.04 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.db import models
    from django.contrib.auth.models import User
    
    from solo.models import SingletonModel
    
    Rafael László's avatar
    Rafael László committed
    from django.db.models import Sum
    from django.db.models.functions import Coalesce   
    
    Bodor Máté's avatar
    Bodor Máté committed
    
    
    Bodor Máté's avatar
    Bodor Máté committed
    class GroupChoice(models.Model):
    
            ('DT', 'DevTeam'),
            ('NET', 'NeTeam'),
            ('ST', 'SecurITeam'),
            ('SYS', 'SysAdmin'),
            ('HAT', 'Hallgatói Tudásbázis'),
            ('N', 'None'),
    
    Rafael László's avatar
    Rafael László committed
        choice = models.CharField(
            max_length=10,
            choices=TEAMS,
            default='N',
            unique=True)
    
    
        def __str__(self):
            return self.choice
    
    
    
    class Profile(models.Model):
    
    Bodor Máté's avatar
    Bodor Máté committed
        ROLES = (
            ('Staff', 'Staff'),
            ('Applicant', 'Applicant'),
            ('Student', 'Student'),
    
    Bodor Máté's avatar
    Bodor Máté committed
        )
    
        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',
    
    Bodor Máté's avatar
    Bodor Máté committed
            on_delete=models.CASCADE
    
    Rafael László's avatar
    Rafael László committed
    
    
        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)
    
    Rafael László's avatar
    Rafael László committed
        groups = models.ManyToManyField(
            GroupChoice, related_name='profiles', blank=True)
    
    Bodor Máté's avatar
    Bodor Máté committed
        role = models.CharField(max_length=10, choices=ROLES, default='Applicant')
    
    rlacko's avatar
    rlacko committed
        @property
    
    Rafael László's avatar
    Rafael László committed
        def events_visited(self):
            return self.events_visitor.all().count()
        
        @property
        def homework_bits(self):
            return self.solution.filter(accepted=True).values('task__bits').aggregate(total_bits=Sum('task__bits')).get('total_bits')
    
    rlacko's avatar
    rlacko committed
    
    
        @property
        def full_name(self):
            return self.user.get_full_name()
    
            return self.full_name
    
    
    
    class Deadline(SingletonModel):
    
        deadline = models.DateTimeField(null=True)
    
        text = models.CharField(max_length=50, blank=True, default='')