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

@ -406,6 +406,12 @@ class Student(models.Model):
return user.has_perm('stages.change_student') or user.teacher == self.klass.teacher
return False
def is_ede_3(self):
return self.klass and self.klass.section.name == 'EDE' and self.klass.level.name == '3'
def is_eds_3(self):
return self.klass and self.klass.section.name == 'EDS' and self.klass.level.name == '3'
def missing_examination_data(self):
missing = []
if not self.date_exam:
@ -431,6 +437,53 @@ class Student(models.Model):
return missing
class Examination(models.Model):
ACQ_MARK_CHOICES = (
('non', 'Non acquis'),
('part', 'Partiellement acquis'),
('acq', 'Acquis'),
)
TYPE_EXAM_CHOICES = (
('exam', 'Examen qualification'),
('entr', 'Entretien professionnel'),
)
student = models.ForeignKey(Student, on_delete=models.CASCADE)
session = models.ForeignKey(
ExamEDESession, null=True, blank=True, on_delete=models.SET_NULL, verbose_name='Session',
)
type_exam = models.CharField("Type", max_length=10, choices=TYPE_EXAM_CHOICES)
date_exam = models.DateTimeField(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)
mark_acq = models.CharField('Note', max_length=5, choices=ACQ_MARK_CHOICES, blank=True)
internal_expert = models.ForeignKey(
Teacher, verbose_name='Expert interne',
null=True, blank=True, on_delete=models.SET_NULL
)
external_expert = models.ForeignKey(
'CorpContact', verbose_name='Expert externe',
null=True, blank=True, on_delete=models.SET_NULL
)
date_soutenance_mailed = models.DateTimeField("Convoc. env.", blank=True, null=True)
date_confirm_received = models.DateTimeField("Récept. confirm", blank=True, null=True)
class Meta:
verbose_name = "Examen"
def missing_examination_data(self):
missing = []
if not self.date_exam:
missing.append("La date dexamen est manquante")
if not self.room:
missing.append("La salle dexamen nest pas définie")
if not self.external_expert:
missing.append("Lexpert externe nest pas défini")
if not self.internal_expert:
missing.append("Lexpert interne nest pas défini")
return missing
class StudentFile(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
fichier = models.FileField(upload_to='etudiants')