From 9d859ad146d2b698948b72ee84aa6cf064b7c961 Mon Sep 17 00:00:00 2001 From: viennet Date: Mon, 12 Oct 2020 23:16:41 +0200 Subject: [PATCH] Portal data sync: avoid erasing emailperso --- sco_synchro_etuds.py | 20 +++++++++++--------- scolars.py | 12 +++++++----- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/sco_synchro_etuds.py b/sco_synchro_etuds.py index 6deec8bf..6cfce0cc 100644 --- a/sco_synchro_etuds.py +++ b/sco_synchro_etuds.py @@ -68,7 +68,7 @@ def formsemestre_synchro_etuds( 2- dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (etuds_noninscrits) 3- dans Apogée et pas dans ScoDoc (a_importer) 4- inscrit dans le semestre ScoDoc, mais pas trouvé dans Apogée (sur la base du code NIP) - + Que faire ? Cas 1: rien à faire Cas 2: inscrire dans le semestre @@ -340,8 +340,7 @@ def build_page( def list_synch(context, sem, anneeapogee=None): - """ - """ + """""" inscrits = sco_inscr_passage.list_inscrits( context, sem["formsemestre_id"], with_dems=True ) @@ -573,8 +572,7 @@ def get_annee_naissance(ddmmyyyyy): # stokee en dd/mm/yyyy dans le XML portail def do_import_etuds_from_portal(context, sem, a_importer, etudsapo_ident, REQUEST): - """Inscrit les etudiants Apogee dans ce semestre. - """ + """Inscrit les etudiants Apogee dans ce semestre.""" log("do_import_etuds_from_portal: a_importer=%s" % a_importer) if not a_importer: return @@ -761,11 +759,11 @@ def get_bac(etud): def formsemestre_import_etud_admission( context, formsemestre_id, import_identite=True, import_email=False ): - """Tente d'importer les données admission depuis le portail + """Tente d'importer les données admission depuis le portail pour tous les étudiants du semestre. Si import_identite==True, recopie l'identité (nom/prenom/sexe/date_naissance) de chaque étudiant depuis le portail. - N'affecte pas les etudiants inconnus sur le portail. + N'affecte pas les etudiants inconnus sur le portail. """ sem = sco_formsemestre.get_formsemestre(context, formsemestre_id) ins = context.do_formsemestre_inscription_list({"formsemestre_id": formsemestre_id}) @@ -777,6 +775,7 @@ def formsemestre_import_etud_admission( unknowns = [] # etudiants avec NIP mais inconnus du portail changed_mails = [] # modification d'adresse mails cnx = context.GetDBConnexion() + for i in ins: etudid = i["etudid"] info = context.getEtudInfo(etudid=etudid, filled=1)[0] @@ -794,10 +793,13 @@ def formsemestre_import_etud_admission( import_naissance=True, import_identite=import_identite, ) + apo_emailperso = etud.get("mailperso", "") + if info["emailperso"] and not apo_emailperso: + apo_emailperso = info["emailperso"] if ( import_email and info["email"] != etud["mail"] - or info["emailperso"] != etud.get("mailperso", "") + or info["emailperso"] != apo_emailperso ): scolars.adresse_edit( cnx, @@ -805,7 +807,7 @@ def formsemestre_import_etud_admission( "etudid": etudid, "adresse_id": info["adresse_id"], "email": etud["mail"], - "emailperso": etud.get("mailperso", ""), + "emailperso": apo_emailperso, }, context=context, ) diff --git a/scolars.py b/scolars.py index a2217e2b..f39f9d92 100644 --- a/scolars.py +++ b/scolars.py @@ -268,14 +268,13 @@ def identite_list(cnx, *a, **kw): def identite_edit_nocheck(cnx, args): - """Modifie les champs mentionnes dans args, sans verification ni notification. - """ + """Modifie les champs mentionnes dans args, sans verification ni notification.""" _identiteEditor.edit(cnx, args) def check_nom_prenom(cnx, nom="", prenom="", etudid=None): """Check if nom and prenom are valid. - Also check for duplicates (homonyms), excluding etudid : + Also check for duplicates (homonyms), excluding etudid : in general, homonyms are allowed, but it may be useful to generate a warning. Returns: True | False, NbHomonyms @@ -418,14 +417,17 @@ def notify_etud_change(context, email_addr, etud, before, after, subject): txt = "\n".join(txt) # build mail log("notify_etud_change: sending notification to %s" % email_addr) + log("notify_etud_change: subject: %s" % subject) + log(txt) msg = MIMEMultipart() subj = Header("[ScoDoc] " + subject, SCO_ENCODING) msg["Subject"] = subj msg["From"] = context.get_preference("email_from_addr") msg["To"] = email_addr - txt = MIMEText(txt, "plain", SCO_ENCODING) - msg.attach(txt) + mime_txt = MIMEText(txt, "plain", SCO_ENCODING) + msg.attach(mime_txt) context.sendEmail(msg) + return txt # --------