Add active Klass manager

This commit is contained in:
Claude Paroz 2018-06-16 18:14:29 +02:00
parent 386d34f63b
commit 772b0b6b01
3 changed files with 15 additions and 11 deletions

View file

@ -4,6 +4,7 @@ from datetime import date, timedelta
from django.conf import settings
from django.db import models
from django.db.models import Case, Count, When
from . import utils
@ -47,6 +48,13 @@ class Level(models.Model):
return None
class ActiveKlassManager(models.Manager):
def get_queryset(self):
return super().get_queryset().annotate(
num_students=Count(Case(When(student__archived=False, then=1)))
).filter(num_students__gt=0)
class Klass(models.Model):
name = models.CharField(max_length=10, verbose_name='Nom', unique=True)
section = models.ForeignKey(Section, verbose_name='Filière', on_delete=models.PROTECT)
@ -54,6 +62,9 @@ class Klass(models.Model):
teacher = models.ForeignKey('Teacher', blank=True, null=True,
on_delete=models.SET_NULL, verbose_name='Maître de classe')
objects = models.Manager()
active = ActiveKlassManager()
class Meta:
verbose_name = "Classe"