Also import klass teachers when importing students
This commit is contained in:
parent
178d88eb54
commit
df2ed434e2
3 changed files with 29 additions and 2 deletions
Binary file not shown.
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue