From 35e5c84933efd82896fee597b9b72f0ed3e1e10c Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Thu, 3 Oct 2019 15:13:34 +0200 Subject: [PATCH] Add new student fields for Entretien professionnel --- stages/admin.py | 17 ++++-- .../0022_student_entretienprof_fields.py | 57 +++++++++++++++++++ stages/models.py | 24 +++++++- 3 files changed, 91 insertions(+), 7 deletions(-) create mode 100644 stages/migrations/0022_student_entretienprof_fields.py diff --git a/stages/admin.py b/stages/admin.py index 855b090..7ed0a98 100644 --- a/stages/admin.py +++ b/stages/admin.py @@ -106,7 +106,10 @@ class StudentAdmin(admin.ModelAdmin): list_filter = (('archived', ArchivedListFilter), ('klass', KlassRelatedListFilter)) search_fields = ('last_name', 'first_name', 'pcode', 'city', 'klass__name') autocomplete_fields = ('corporation', 'instructor', 'supervisor', 'mentor', 'expert') - readonly_fields = ('report_sem1_sent', 'report_sem2_sent', 'examination_actions', 'date_soutenance_mailed') + readonly_fields = ( + 'report_sem1_sent', 'report_sem2_sent', 'examination_actions', + 'date_soutenance_mailed', 'date_soutenance_ep_mailed' + ) fieldsets = ( (None, { 'fields': (('last_name', 'first_name', 'ext_id'), ('street', 'pcode', 'city', 'district'), @@ -122,18 +125,22 @@ class StudentAdmin(admin.ModelAdmin): ("Examen Qualification ES", { 'classes': ('collapse',), 'fields': ( + ('session', 'date_exam', 'room', 'mark'), ('supervisor', 'supervision_attest_received'), ('subject', 'title'), ('training_referent', 'referent', 'mentor'), + ('internal_expert', 'expert'), + ('date_soutenance_mailed', 'date_confirm_received'), + ('examination_actions',) ) }), ("Entretien professionnel ES", { 'classes': ('collapse',), 'fields': ( - ('session', 'date_exam', 'room', 'mark'), - ('internal_expert', 'expert'), - ('date_soutenance_mailed', 'date_confirm_received'), - ('examination_actions',) + ('session_ep', 'date_exam_ep', 'room_ep', 'mark_ep'), + ('internal_expert_ep', 'expert_ep'), + ('date_soutenance_ep_mailed', 'date_confirm_ep_received'), + #('examination_actions',) ) }), ) diff --git a/stages/migrations/0022_student_entretienprof_fields.py b/stages/migrations/0022_student_entretienprof_fields.py new file mode 100644 index 0000000..a61e1df --- /dev/null +++ b/stages/migrations/0022_student_entretienprof_fields.py @@ -0,0 +1,57 @@ +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('stages', '0021_teacher_can_examinate'), + ] + + operations = [ + migrations.AddField( + model_name='student', + name='date_confirm_ep_received', + field=models.DateTimeField(blank=True, null=True, verbose_name='Récept. confirm'), + ), + migrations.AddField( + model_name='student', + name='date_exam_ep', + field=models.DateTimeField(blank=True, null=True, verbose_name='Date exam. EP'), + ), + migrations.AddField( + model_name='student', + name='date_soutenance_ep_mailed', + field=models.DateTimeField(blank=True, null=True, verbose_name='Convoc. env.'), + ), + migrations.AddField( + model_name='student', + name='expert_ep', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_expert_ep', to='stages.CorpContact', verbose_name='Expert externe EP'), + ), + migrations.AddField( + model_name='student', + name='internal_expert_ep', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='rel_internal_expert_ep', to='stages.Teacher', verbose_name='Expert interne EP'), + ), + migrations.AddField( + model_name='student', + name='mark_ep', + field=models.DecimalField(blank=True, decimal_places=2, max_digits=3, null=True, verbose_name='Note EP'), + ), + migrations.AddField( + model_name='student', + name='room_ep', + field=models.CharField(blank=True, max_length=15, verbose_name='Salle EP'), + ), + migrations.AddField( + model_name='student', + name='session_ep', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='students_ep', to='stages.ExamEDESession', verbose_name='Session EP'), + ), + migrations.AlterField( + model_name='student', + name='session', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='students_es', to='stages.ExamEDESession'), + ), + ] diff --git a/stages/models.py b/stages/models.py index 8c52497..1029288 100644 --- a/stages/models.py +++ b/stages/models.py @@ -310,14 +310,34 @@ class Student(models.Model): on_delete=models.SET_NULL, verbose_name='Référent avant-projet') internal_expert = models.ForeignKey(Teacher, related_name='rel_internal_expert', verbose_name='Expert interne', null=True, blank=True, on_delete=models.SET_NULL) - session = models.ForeignKey(ExamEDESession, null=True, blank=True, on_delete=models.SET_NULL) + session = models.ForeignKey( + ExamEDESession, null=True, blank=True, on_delete=models.SET_NULL, related_name='students_es', + ) date_exam = models.DateTimeField(blank=True, null=True) last_appointment = models.DateField(blank=True, null=True) room = models.CharField('Salle', max_length=15, blank=True) mark = models.DecimalField('Note', max_digits=3, decimal_places=2, blank=True, null=True) date_soutenance_mailed = models.DateTimeField("Convoc. env.", blank=True, null=True) date_confirm_received = models.DateTimeField("Récept. confirm", blank=True, null=True) - # ============== Fields for examination ====================== + # ============== Fields for Entretien professionnel ========= + session_ep = models.ForeignKey( + ExamEDESession, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='Session EP', + related_name='students_ep', + ) + date_exam_ep = models.DateTimeField("Date exam. EP", blank=True, null=True) + room_ep = models.CharField('Salle EP', max_length=15, blank=True) + mark_ep = models.DecimalField('Note EP', max_digits=3, decimal_places=2, blank=True, null=True) + internal_expert_ep = models.ForeignKey( + Teacher, related_name='rel_internal_expert_ep', verbose_name='Expert interne EP', + null=True, blank=True, on_delete=models.SET_NULL + ) + expert_ep = models.ForeignKey( + 'CorpContact', related_name='rel_expert_ep', verbose_name='Expert externe EP', + null=True, blank=True, on_delete=models.SET_NULL + ) + date_soutenance_ep_mailed = models.DateTimeField("Convoc. env.", blank=True, null=True) + date_confirm_ep_received = models.DateTimeField("Récept. confirm", blank=True, null=True) + # =============== mc_comment = models.TextField("Commentaires", blank=True) support_tabimport = True