Add class level (and filter on it)

This commit is contained in:
Claude Paroz 2012-11-23 11:31:06 +01:00
parent 6707a00d6e
commit 20c7637321
5 changed files with 47 additions and 8 deletions

Binary file not shown.

View file

@ -2,8 +2,8 @@ from django import forms
from django.contrib import admin
from django.db import models
from stages.models import (Student, Section, Klass, Referent, Corporation, CorpContact,
Domain, Period, Availability, Training)
from stages.models import (Student, Section, Level, Klass, Referent, Corporation,
CorpContact, Domain, Period, Availability, Training)
class StudentAdmin(admin.ModelAdmin):
@ -77,8 +77,8 @@ class AvailabilityInline(admin.TabularInline):
class PeriodAdmin(admin.ModelAdmin):
list_display = ('title', 'dates', 'section')
list_filter = ('section',)
list_display = ('title', 'dates', 'section', 'level')
list_filter = ('section', 'level')
inlines = [AvailabilityInline]
@ -94,6 +94,7 @@ class AvailabilityAdmin(admin.ModelAdmin):
admin.site.register(Section)
admin.site.register(Level)
admin.site.register(Klass)
admin.site.register(Student, StudentAdmin)
admin.site.register(Referent, ReferentAdmin)

View file

@ -20,12 +20,36 @@
"name": "EDE"
}
},
{
"pk": 1,
"model": "stages.level",
"fields": {
"name": "1"
}
},
{
"pk": 2,
"model": "stages.level",
"fields": {
"name": "2"
}
},
{
"pk": 1,
"model": "stages.klass",
"fields": {
"name": "1ASE3",
"section": 1
"section": 1,
"level": 1
}
},
{
"pk": 2,
"model": "stages.klass",
"fields": {
"name": "2ASE3",
"section": 1,
"level": 2
}
},
{
@ -138,6 +162,7 @@
"fields": {
"title": "Stage de pré-sensibilisation",
"section": 1,
"level": 1,
"start_date": "2012-11-26",
"end_date": "2012-12-07"
}

View file

@ -23,9 +23,20 @@ class Section(models.Model):
return self.name
class Level(models.Model):
name = models.CharField(max_length=10, verbose_name='Nom')
class Meta:
verbose_name = "Niveau"
def __unicode__(self):
return self.name
class Klass(models.Model):
name = models.CharField(max_length=10, verbose_name='Nom')
section = models.ForeignKey(Section, verbose_name='Filière')
level = models.ForeignKey(Level, verbose_name='Niveau')
class Meta:
verbose_name = "Classe"
@ -131,6 +142,7 @@ class Period(models.Model):
""" Périodes de stages """
title = models.CharField(max_length=150, verbose_name='Titre')
section = models.ForeignKey(Section, verbose_name='Filière')
level = models.ForeignKey(Level, verbose_name='Niveau')
start_date = models.DateField(verbose_name='Date de début')
end_date = models.DateField(verbose_name='Date de fin')

View file

@ -57,11 +57,12 @@ def section_classes(request, pk):
def period_students(request, pk):
""" Return all students from period's section, with corresponding Training
if existing (JSON)
"""
Return all students from period's section and level,
with corresponding Training if existing (JSON)
"""
period = get_object_or_404(Period, pk=pk)
students = Student.objects.filter(klass__section=period.section).order_by('last_name')
students = Student.objects.filter(klass__section=period.section, klass__level=period.level).order_by('last_name')
trainings = dict((t.student_id, t.id) for t in Training.objects.filter(availability__period=period))
data = [{
'name': unicode(s),