diff --git a/docs/SchemaRelationnel.odg b/docs/SchemaRelationnel.odg index 1cc6cf7..b2e2b2a 100644 Binary files a/docs/SchemaRelationnel.odg and b/docs/SchemaRelationnel.odg differ diff --git a/stages/admin.py b/stages/admin.py index 28a6a4c..cc886b9 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -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) diff --git a/stages/fixtures/test_fixture.json b/stages/fixtures/test_fixture.json index c33db51..9a24907 100644 --- a/stages/fixtures/test_fixture.json +++ b/stages/fixtures/test_fixture.json @@ -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" } diff --git a/stages/models.py b/stages/models.py index b5abb4f..4bd5a90 100644 --- a/stages/models.py +++ b/stages/models.py @@ -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') diff --git a/stages/views.py b/stages/views.py index d96e3b7..0973621 100644 --- a/stages/views.py +++ b/stages/views.py @@ -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),