From df8f520b86da0eeea011661896f5d5f736abcb2e Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Tue, 11 Jul 2017 23:01:46 +0200 Subject: [PATCH] Added Teacher model --- stages/admin.py | 11 +++++- stages/migrations/0011_add_teacher_model.py | 42 +++++++++++++++++++++ stages/models.py | 23 +++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 stages/migrations/0011_add_teacher_model.py diff --git a/stages/admin.py b/stages/admin.py index 0003c03..eff3e1c 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -2,8 +2,10 @@ from django import forms from django.contrib import admin from django.db import models -from stages.models import (Student, Section, Level, Klass, Referent, Corporation, - CorpContact, Domain, Period, Availability, Training) +from stages.models import ( + Teacher, Student, Section, Level, Klass, Referent, Corporation, + CorpContact, Domain, Period, Availability, Training, +) class ArchivedListFilter(admin.BooleanFieldListFilter): @@ -30,6 +32,10 @@ class KlassAdmin(admin.ModelAdmin): ordering = ('name',) +class TeacherAdmin(admin.ModelAdmin): + list_display = ('__str__', 'abrev', 'email') + + class StudentAdmin(admin.ModelAdmin): list_display = ('__str__', 'pcode', 'city', 'klass', 'archived') ordering = ('last_name', 'first_name') @@ -176,6 +182,7 @@ admin.site.register(Level) admin.site.register(Klass, KlassAdmin) admin.site.register(Student, StudentAdmin) admin.site.register(Referent, ReferentAdmin) +admin.site.register(Teacher, TeacherAdmin) admin.site.register(Corporation, CorporationAdmin) admin.site.register(CorpContact, CorpContactAdmin) admin.site.register(Domain) diff --git a/stages/migrations/0011_add_teacher_model.py b/stages/migrations/0011_add_teacher_model.py new file mode 100644 index 0000000..c29ccec --- /dev/null +++ b/stages/migrations/0011_add_teacher_model.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.2 on 2017-07-11 23:05 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('stages', '0010_nullable_student_klass'), + ] + + operations = [ + migrations.CreateModel( + name='Teacher', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('civility', models.CharField(max_length=10, verbose_name='Civilité')), + ('first_name', models.CharField(max_length=40, verbose_name='Prénom')), + ('last_name', models.CharField(max_length=40, verbose_name='Nom')), + ('abrev', models.CharField(max_length=10, verbose_name='Sigle')), + ('birth_date', models.DateField(blank=True, verbose_name='Date de naissance')), + ('email', models.EmailField(blank=True, max_length=254, verbose_name='Courriel')), + ('contract', models.CharField(max_length=20, verbose_name='Contrat')), + ('rate', models.DecimalField(decimal_places=1, default=0.0, max_digits=4, verbose_name="Taux d'activité")), + ('ext_id', models.IntegerField(blank=True, null=True)), + ('previous_report', models.IntegerField(default=0, verbose_name='Report précédent')), + ('next_report', models.IntegerField(default=0, verbose_name='Report suivant')), + ], + options={ + 'verbose_name': 'Enseignant', + 'ordering': ('last_name', 'first_name'), + }, + ), + migrations.AddField( + model_name='klass', + name='teacher', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Teacher', verbose_name='Maître de classe'), + ), + ] diff --git a/stages/models.py b/stages/models.py index 6294fa1..2c21b69 100644 --- a/stages/models.py +++ b/stages/models.py @@ -48,6 +48,8 @@ class Klass(models.Model): name = models.CharField(max_length=10, verbose_name='Nom') section = models.ForeignKey(Section, verbose_name='Filière', on_delete=models.PROTECT) level = models.ForeignKey(Level, verbose_name='Niveau', on_delete=models.PROTECT) + teacher = models.ForeignKey('Teacher', blank=True, null=True, + on_delete=models.SET_NULL, verbose_name='Maître de classe') class Meta: verbose_name = "Classe" @@ -56,6 +58,27 @@ class Klass(models.Model): return self.name +class Teacher(models.Model): + civility = models.CharField(max_length=10, verbose_name='Civilité') + first_name = models.CharField(max_length=40, verbose_name='Prénom') + last_name = models.CharField(max_length=40, verbose_name='Nom') + abrev = models.CharField(max_length=10, verbose_name='Sigle') + birth_date = models.DateField(verbose_name='Date de naissance', blank=True) + email = models.EmailField(verbose_name='Courriel', blank=True) + contract = models.CharField(max_length=20, verbose_name='Contrat') + rate = models.DecimalField(default=0.0, max_digits=4, decimal_places=1, verbose_name="Taux d'activité") + ext_id = models.IntegerField(blank=True, null=True) + previous_report = models.IntegerField(default=0, verbose_name='Report précédent') + next_report = models.IntegerField(default=0, verbose_name='Report suivant') + + class Meta: + verbose_name='Enseignant' + ordering = ('last_name', 'first_name') + + def __str__(self): + return '{0} {1}'.format(self.last_name, self.first_name) + + class Student(models.Model): ext_id = models.IntegerField(null=True, unique=True, verbose_name='ID externe') first_name = models.CharField(max_length=40, verbose_name='Prénom')