Add active Klass manager
This commit is contained in:
parent
386d34f63b
commit
772b0b6b01
3 changed files with 15 additions and 11 deletions
|
|
@ -5,7 +5,6 @@ import zipfile
|
|||
from django import forms
|
||||
from django.contrib import admin
|
||||
from django.db import models
|
||||
from django.db.models import Case, Count, When
|
||||
from django.http import HttpResponse
|
||||
from django.urls import reverse
|
||||
from django.utils.html import format_html
|
||||
|
|
@ -63,9 +62,7 @@ class ArchivedListFilter(admin.BooleanFieldListFilter):
|
|||
class KlassRelatedListFilter(admin.RelatedFieldListFilter):
|
||||
def field_choices(self, field, request, model_admin):
|
||||
return [
|
||||
(k.pk, k.name) for k in Klass.objects.annotate(
|
||||
num_students=Count(Case(When(student__archived=False, then=1)))
|
||||
).filter(num_students__gt=0).order_by('name')
|
||||
(k.pk, k.name) for k in Klass.active.order_by('name')
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from django.contrib import messages
|
|||
from django.core.files import File
|
||||
from django.core.mail import EmailMessage
|
||||
from django.db import transaction
|
||||
from django.db.models import Case, Count, Value, When, Q, Sum
|
||||
from django.db.models import Count, Value, Q, Sum
|
||||
from django.db.models.functions import Concat
|
||||
from django.http import HttpResponse, HttpResponseNotAllowed, HttpResponseRedirect
|
||||
from django.shortcuts import get_object_or_404, redirect
|
||||
|
|
@ -83,8 +83,7 @@ class CorporationView(DetailView):
|
|||
|
||||
|
||||
class KlassListView(ListView):
|
||||
queryset = Klass.objects.all().annotate(num_students=Count(Case(When(student__archived=False, then=1)))
|
||||
).filter(num_students__gt=0).order_by('section', 'name')
|
||||
queryset = Klass.active.order_by('section', 'name')
|
||||
template_name = 'classes.html'
|
||||
|
||||
|
||||
|
|
@ -1043,10 +1042,7 @@ def print_mentor_ede_compensation_form(request, pk):
|
|||
|
||||
|
||||
def print_klass_list(request):
|
||||
query = Klass.objects.all(
|
||||
).annotate(num_students=Count(Case(When(student__archived=False, then=1)))
|
||||
).filter(num_students__gt=0
|
||||
).order_by('section', 'name')
|
||||
query = Klass.active.order_by('section', 'name')
|
||||
|
||||
filename = 'archive_RolesDeClasses.zip'
|
||||
path = os.path.join(tempfile.gettempdir(), filename)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue