Add new examination model

This commit is contained in:
Claude Paroz 2020-02-13 09:39:27 +01:00
parent 4fbacd3d93
commit ad3b9bd936
5 changed files with 223 additions and 97 deletions

View file

@ -0,0 +1,32 @@
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('stages', '0025_section_has_stages'),
]
operations = [
migrations.CreateModel(
name='Examination',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date_exam', models.DateTimeField(blank=True, null=True)),
('room', models.CharField(blank=True, max_length=15, verbose_name='Salle')),
('mark', models.DecimalField(blank=True, decimal_places=2, max_digits=3, null=True, verbose_name='Note')),
('mark_acq', models.CharField(blank=True, choices=[('non', 'Non acquis'), ('part', 'Partiellement acquis'), ('acq', 'Acquis')], max_length=5, verbose_name='Note')),
('date_soutenance_mailed', models.DateTimeField(blank=True, null=True, verbose_name='Convoc. env.')),
('date_confirm_received', models.DateTimeField(blank=True, null=True, verbose_name='Récept. confirm')),
('external_expert', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.CorpContact', verbose_name='Expert externe')),
('internal_expert', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.Teacher', verbose_name='Expert interne')),
('session', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stages.ExamEDESession', verbose_name='Session')),
('student', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='stages.Student')),
('type_exam', models.CharField(choices=[('exam', 'Examen qualification'), ('entr', 'Entretien professionnel')], default='', max_length=10, verbose_name='Type')),
],
options={
'verbose_name': 'Examen',
},
),
]

View file

@ -0,0 +1,35 @@
from django.db import migrations
def migrate_exams(apps, schema_editor):
Student = apps.get_model('stages', 'Student')
Examination = apps.get_model('stages', 'Examination')
for student in Student.objects.all():
if student.session or student.date_exam:
Examination.objects.create(
student=student, type_exam='exam',
session=student.session, date_exam=student.date_exam,
room=student.room, mark=student.mark, mark_acq=student.mark_acq,
internal_expert=student.internal_expert, external_expert=student.expert,
date_soutenance_mailed=student.date_soutenance_mailed,
date_confirm_received=student.date_confirm_received,
)
if student.session_ep or student.date_exam_ep:
Examination.objects.create(
student=student, type_exam='entre',
session=student.session_ep, date_exam=student.date_exam_ep,
room=student.room_ep, mark=student.mark_ep, mark_acq=student.mark_ep_acq,
internal_expert=student.internal_expert_ep, external_expert=student.expert_ep,
date_soutenance_mailed=student.date_soutenance_ep_mailed,
date_confirm_received=student.date_confirm_ep_received,
)
class Migration(migrations.Migration):
dependencies = [
('stages', '0026_examination'),
]
operations = [migrations.RunPython(migrate_exams)]