Also import klass teachers when importing students

This commit is contained in:
Claude Paroz 2018-08-16 21:06:32 +02:00
parent 178d88eb54
commit df2ed434e2
3 changed files with 29 additions and 2 deletions

View file

@ -465,6 +465,10 @@ class ImportTests(TestCase):
assc = Section.objects.create(name='ASSC')
Option.objects.create(name='Accompagnement des enfants')
k1 = Klass.objects.create(name='1ASSCFEa', section=assc, level=lev1)
teacher = Teacher.objects.create(
first_name='Jeanne', last_name='Dupond', birth_date='1974-08-08'
)
# Corporation without ext_id will have its ext_id added.
corp = Corporation.objects.create(name='Centre Cantonal de peinture', city='Marin-Epagnier')
inst = CorpContact.objects.create(first_name="Roberto", last_name="Rastapopoulos")
@ -483,8 +487,8 @@ class ImportTests(TestCase):
msg = "\n".join(str(m) for m in response.context['messages'])
self.assertIn("La classe '2ASSCFEa' n'existe pas encore", msg)
Klass.objects.create(name='2ASSCFEa', section=assc, level=lev2)
Klass.objects.create(
klass_assc = Klass.objects.create(name='2ASSCFEa', section=assc, level=lev2)
klass_epe = Klass.objects.create(
name='2EDEpe',
section=Section.objects.create(name='EDE'),
level=lev2,
@ -513,6 +517,9 @@ class ImportTests(TestCase):
# Tournesol was archived
stud_arch = Student.objects.get(ext_id=44444)
self.assertTrue(stud_arch.archived)
# Klass teachers have been set
klass_assc.teacher = teacher
klass_epe.teacher = teacher
# Corporation.ext_id is updated
corp.refresh_from_db()
self.assertEqual(corp.ext_id, 100)

View file

@ -91,6 +91,7 @@ class StudentImportView(ImportViewBase):
'ELE_AVS': 'avs',
'ELE_SEXE': 'gender',
'INS_CLASSE': 'klass',
'INS_MC': 'teacher',
'PROF_DOMAINE_SPEC': 'option_ase',
}
corporation_mapping = {
@ -179,6 +180,8 @@ class StudentImportView(ImportViewBase):
existing_students_ids = set(
self._existing_students.values_list('ext_id', flat=True)
)
seen_klasses = set()
prof_dict = {str(t): t for t in Teacher.objects.all()}
for line in up_file:
student_defaults = {
@ -203,6 +206,22 @@ class StudentImportView(ImportViewBase):
student_defaults['option_ase'] = self.mapping_option_ase[student_defaults['option_ase']]
defaults = self.clean_values(student_defaults)
if defaults.get('teacher') and defaults['klass'] not in seen_klasses:
klass = defaults['klass']
for full_name in defaults['teacher'].split(', '):
if 'Secrétariat' in full_name:
continue
# Set the teacher for this klass
try:
klass.teacher = prof_dict[full_name]
klass.save()
except KeyError:
err_msg.append(
"L'enseignant {0} n'existe pas dans la base de données".format(full_name)
)
seen_klasses.add(klass)
try:
student = Student.objects.get(ext_id=defaults['ext_id'])
modified = False
@ -227,6 +246,7 @@ class StudentImportView(ImportViewBase):
defaults['klass'])
)
del defaults['teacher']
Student.objects.create(**defaults)
obj_created += 1