Set some field priority during student import

This commit is contained in:
Claude Paroz 2018-07-13 15:37:26 +02:00
parent d9099f039b
commit 626ab6888d
2 changed files with 9 additions and 4 deletions

View file

@ -471,7 +471,7 @@ class ImportTests(TestCase):
option='ENF', instructor=inst
)
# An existing student, klass should be changed.
Student.objects.create(ext_id=11111, first_name="Séraphin", last_name="Lampion", klass=k1)
Student.objects.create(ext_id=11111, first_name="Séraphin", last_name="Lampion", city='Marin', klass=k1)
Student.objects.create(ext_id=44444, first_name="Tryphon", last_name="Tournesol", klass=k1)
path = os.path.join(os.path.dirname(__file__), 'test_files', 'CLOEE2_Export_FE_2018.xlsx')
@ -498,8 +498,10 @@ class ImportTests(TestCase):
self.assertIn("Objets créés : 2", msg)
self.assertIn("Objets modifiés : 1", msg)
# Student already exists, klass changed
student1 = Student.objects.get(ext_id=11111)
self.assertEqual(student1.klass.name, '2ASSCFEa')
self.assertEqual(student1.city, 'Marin') # file has 'Marin-Epagnier'
# New student from existing candidate.
student_cand = Student.objects.get(ext_id=22222)
self.assertEqual(student_cand.instructor.last_name, 'Rastapopoulos')

View file

@ -84,6 +84,7 @@ class StudentImportView(ImportViewBase):
'ELE_TEL_PRIVE': 'tel',
'ELE_TEL_MOBILE': 'mobile',
'ELE_EMAIL_RPN': 'email',
'ELE_COMPTE_RPN': 'login_rpn',
'ELE_DATE_NAISSANCE': 'birth_date',
'ELE_AVS': 'avs',
'ELE_SEXE': 'gender',
@ -105,6 +106,8 @@ class StudentImportView(ImportViewBase):
'HAN': 'Accompagnement des personnes handicapées',
'PAG': 'Accompagnement des personnes âgées',
}
# Those values are always taken from the import file
fields_to_overwrite = ['klass', 'login_rpn']
def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
@ -172,9 +175,9 @@ class StudentImportView(ImportViewBase):
try:
student = Student.objects.get(ext_id=defaults['ext_id'])
modified = False
for key, val in defaults.items():
if getattr(student, key) != val:
setattr(student, key, val)
for field_name in self.fields_to_overwrite:
if getattr(student, field_name) != defaults[field_name]:
setattr(student, field_name, defaults[field_name])
modified = True
if student.archived:
sudent.archived = False