From df2ed434e2f46e65ac1c828e146d6679a8fea961 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Thu, 16 Aug 2018 21:06:32 +0200 Subject: [PATCH] Also import klass teachers when importing students --- stages/test_files/CLOEE2_Export_FE_2018.xlsx | Bin 8281 -> 8375 bytes stages/tests.py | 11 ++++++++-- stages/views/imports.py | 20 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/stages/test_files/CLOEE2_Export_FE_2018.xlsx b/stages/test_files/CLOEE2_Export_FE_2018.xlsx index c3cdb3899c526cda8121bb688478f392d34db8f7..f50e534b74c7d92ca75a6f311abf1abe723997e6 100644 GIT binary patch delta 6186 zcmai&cQl+&+s8$3tAyxXA_%fVM2Oy^_ilp-vMhwAZm!{y%W7g zw}}2qe$RQHJn#F*JLk-tx#xUl&bi8c&7AL~bd3y|mMRV|H5MTuA(mh~g?gni-JM&w zzh_8idJcH6-B%z*;I20@r*qW`Y6Ku-@R~;gZz{kPCRFfALk|=3iL7th5X|0LTf=N~ z3WZKUt8+zV)u!sB_zIJ$=d%r`w#5&AG{xEL+@;naT4Hux#tnm~3K$>|=7f zMm?BCa(sKBBpe;YF0~IhNNF95$Wvz27eV}3q-zlAfMaQ?5)j5xeVyLM!ou>og?00d zL-LnrkSPqD@Ij4MAhq|&gM`ND66x=d>X=Y=$>%RQ6qigL9%j|KshgrM8fL%Y6NkMy znQ?)^G~Xak-HmZQfd&S=3a_X$u&7G|_1=ZQ80!Wq`njnQ8R!w~xMD@DPO7&)UWxa+ zuL}lh_yfMgRK)$Hc1Rtjw(73YdL({8ywa&|t+M(|82)q&0WW9T6AicdjN5_hLi!{) zgN12uP-m}2XIE{IfiNn=_jX(*3PC6dW=0LYkQjJm+oe+%5L`Hv#xyc#K-OAUqI8rU ze|AdbV=5t8qb--8oVVy(u`Eisf{((X^uU<{jSH0`+b>~Z6;AStz~rE1sQOD48&}yM zR2OSraI1;Y_)dmnTrd7+XU?ia@vZOXfM}B3gH-q)#HzJj?g70?FE5GBY}Z3?PMI0z z3WXLZwm+`9j$GNn#Q76rrr1ds(;!aKadM>=zJ^9vDkV8pa4!360Wch(QhphO5( zBXsD_K-KxdqN$D4?~vR}u`qaZ6OKh}EUf>PtmR}h|Kw^V3Dr~Vf3o)Z9TvFptRoso z*D$AR)M(BQj;*E|s7ggah4k%t)svwMzPAd$DOL{$OI|`qafjSML+Yx+&Q|Apr(PjT z=9If$@w#uLgYKrBzI9!e^)+s@YSm%=(f73`kK%cd5rW%xBII7e-ZPISWqlnlq-Bw> zjm1z%l1{sLM~rr`%iU-Xza+R%?AsX595jd9D|TRb&PJTB?N*)8eWk#bW~=UJJ@L4d z=8smsI+5Hm^$M@5p2Wpgb#J%gU*WVdVk1udfUkMpva62LT_gGuSm{uzc9P62ETV zYyyy0Yz5OB+!rJzZ?g+73;c1&AN#Q_`9HI>6Y>Q&NTIgXW4=otd$VhKj4FA(Pm)9Q)*kB*#SV6q8E7a}8Nie5Lquwu)*4UK9(+o2k;w0(lp> zIWmj})oVN+o`2hhAQ0>ioqXp2c!@6JKpd`&uMe38dcYk#!wED94melL<>J-RzrTwsFNkd=N#{3jn zNiY6*npi?yy6G@bY`;`0<&Oy=#~scnDPeDFn4nxMHg!!nQc zJbK4!BE9%mWuXRIC9qFxb; zteveV!^w_pYEhdJ!f+7WUIe+(YW_}{)8stE$C{=6!Nbv}Z~eWmn9qOkHNCEaKuwAr zT~_ccy@y+CehE3qAHD+~X=ZM8caaaPbCx$@bY?GKQ5GT3_AS#E9+mV4SZ{VX3J=ew zd3LvrmlikJ!WZ*ueqJ15xavk^Pn{2cl^L6Pd5My^2KU69Y{C1ZH=*a~ZDOH_PPrZI zYySKTGgX?wX{{5C^~OExfLae40--yBjRwQNawtl(YGgh!fu%kjjnbxFh)xkZ?R^>W z*1LK(E0P48yMHzGA@`~XHruXRH=@k7Tev&uJl)*$!Si9a@K1jY+V-5Q0#7eJav`h4 zy3W_BIds3eSG3`m`Jhtu%87EvCi^jasjSzJlVGY2y7i+47d~m`8lyd0D-B8yYx&y? zCtshkC`dixv9F1@?AqlJ^4PZKEL>M;SOp)A&SAc>BqZu8dU6y(vEFjKW&A}6C0(tW@_JP{4-IkwCeNm5yVX|VArLpI8y9DLh#TjI+ zLDKLd7jC8H(ee9FDU=ngZ`Yv=HlF0l-O3rgy~L>oS@j{e9TJCS(P&zX-m5LYeC@t{ z2S=NUe$hu=<@RqYzYK!uJW-JdXD0fY`Pt#fgs

^T9Ebc3YM&fn7;I<`oBhc82+E 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 delta 6144 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 J>gj$f{{xY&Hl+Xn diff --git a/stages/tests.py b/stages/tests.py index 2bf562d..fee6641 100644 --- a/stages/tests.py +++ b/stages/tests.py @@ -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) diff --git a/stages/views/imports.py b/stages/views/imports.py index a95f1de..7c9311c 100644 --- a/stages/views/imports.py +++ b/stages/views/imports.py @@ -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