From b50dd1a619a3d601a3b53cc2dc9c6ff7f2b479cb Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Mon, 19 Feb 2018 10:08:46 +0100 Subject: [PATCH] Add LogBook model --- stages/admin.py | 3 ++ stages/migrations/0008_add_logbook.py | 47 +++++++++++++++++++++++++++ stages/models.py | 27 +++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 stages/migrations/0008_add_logbook.py diff --git a/stages/admin.py b/stages/admin.py index ef231cc..106fb8b 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -11,6 +11,7 @@ from django.http import HttpResponse from .models import ( Teacher, Option, Student, Section, Level, Klass, Corporation, CorpContact, Domain, Period, Availability, Training, Course, + LogBookReason, LogBook, ) from .pdf import ChargeSheetPDF @@ -261,3 +262,5 @@ admin.site.register(Domain) admin.site.register(Period, PeriodAdmin) admin.site.register(Availability, AvailabilityAdmin) admin.site.register(Training, TrainingAdmin) +admin.site.register(LogBookReason) +admin.site.register(LogBook) diff --git a/stages/migrations/0008_add_logbook.py b/stages/migrations/0008_add_logbook.py new file mode 100644 index 0000000..7f20c47 --- /dev/null +++ b/stages/migrations/0008_add_logbook.py @@ -0,0 +1,47 @@ +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('stages', '0007_add_student_expert'), + ] + + operations = [ + migrations.CreateModel( + name='LogBook', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('input_date', models.DateField(auto_now_add=True, verbose_name='Date de saisie')), + ('start_date', models.DateField(verbose_name='Date de début')), + ('end_date', models.DateField(verbose_name='Date de fin')), + ('nb_period', models.IntegerField(verbose_name='Périodes')), + ('comment', models.CharField(blank=True, max_length=200, verbose_name='Commentaire motif')), + ], + options={ + 'verbose_name': 'Carnet du lait', + 'verbose_name_plural': 'Carnets du lait', + }, + ), + migrations.CreateModel( + name='LogBookReason', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=50, unique=True, verbose_name='Motif')), + ], + options={ + 'verbose_name': 'Motif de carnet du lait', + }, + ), + migrations.AddField( + model_name='logbook', + name='reason', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='stages.LogBookReason', verbose_name='Catégorie de motif'), + ), + migrations.AddField( + model_name='logbook', + name='teacher', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='stages.Teacher', verbose_name='Enseignant'), + ), + ] diff --git a/stages/models.py b/stages/models.py index a93be43..dc682f8 100644 --- a/stages/models.py +++ b/stages/models.py @@ -144,6 +144,33 @@ class Teacher(models.Model): return (self.calc_activity(), imputations) +class LogBookReason(models.Model): + name = models.CharField('Motif', max_length=50, unique=True) + + def __str__(self): + return self.name + + class Meta: + verbose_name = 'Motif de carnet du lait' + + +class LogBook(models.Model): + teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, verbose_name='Enseignant') + reason = models.ForeignKey(LogBookReason, on_delete=models.PROTECT, verbose_name='Catégorie de motif') + input_date = models.DateField('Date de saisie', auto_now_add=True) + start_date = models.DateField('Date de début') + end_date = models.DateField('Date de fin') + nb_period = models.IntegerField('Périodes') + comment = models.CharField('Commentaire motif', max_length=200, blank=True) + + def __str__(self): + return '{} : {} pér. - {}'.format(self.teacher, self.nb_period, self.comment) + + class Meta: + verbose_name = 'Carnet du lait' + verbose_name_plural = 'Carnets du lait' + + class Option(models.Model): name = models.CharField("Nom", max_length=100, unique=True)