Portal data sync: avoid erasing emailperso

This commit is contained in:
viennet 2020-10-12 23:16:41 +02:00
parent a934542537
commit 9d859ad146
2 changed files with 18 additions and 14 deletions

View File

@ -68,7 +68,7 @@ def formsemestre_synchro_etuds(
2- dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (etuds_noninscrits) 2- dans Apogée, dans ScoDoc, mais pas inscrit dans le semestre (etuds_noninscrits)
3- dans Apogée et pas dans ScoDoc (a_importer) 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) 4- inscrit dans le semestre ScoDoc, mais pas trouvé dans Apogée (sur la base du code NIP)
Que faire ? Que faire ?
Cas 1: rien à faire Cas 1: rien à faire
Cas 2: inscrire dans le semestre Cas 2: inscrire dans le semestre
@ -340,8 +340,7 @@ def build_page(
def list_synch(context, sem, anneeapogee=None): def list_synch(context, sem, anneeapogee=None):
""" """"""
"""
inscrits = sco_inscr_passage.list_inscrits( inscrits = sco_inscr_passage.list_inscrits(
context, sem["formsemestre_id"], with_dems=True 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): 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) log("do_import_etuds_from_portal: a_importer=%s" % a_importer)
if not a_importer: if not a_importer:
return return
@ -761,11 +759,11 @@ def get_bac(etud):
def formsemestre_import_etud_admission( def formsemestre_import_etud_admission(
context, formsemestre_id, import_identite=True, import_email=False 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. pour tous les étudiants du semestre.
Si import_identite==True, recopie l'identité (nom/prenom/sexe/date_naissance) Si import_identite==True, recopie l'identité (nom/prenom/sexe/date_naissance)
de chaque étudiant depuis le portail. 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) sem = sco_formsemestre.get_formsemestre(context, formsemestre_id)
ins = context.do_formsemestre_inscription_list({"formsemestre_id": 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 unknowns = [] # etudiants avec NIP mais inconnus du portail
changed_mails = [] # modification d'adresse mails changed_mails = [] # modification d'adresse mails
cnx = context.GetDBConnexion() cnx = context.GetDBConnexion()
for i in ins: for i in ins:
etudid = i["etudid"] etudid = i["etudid"]
info = context.getEtudInfo(etudid=etudid, filled=1)[0] info = context.getEtudInfo(etudid=etudid, filled=1)[0]
@ -794,10 +793,13 @@ def formsemestre_import_etud_admission(
import_naissance=True, import_naissance=True,
import_identite=import_identite, import_identite=import_identite,
) )
apo_emailperso = etud.get("mailperso", "")
if info["emailperso"] and not apo_emailperso:
apo_emailperso = info["emailperso"]
if ( if (
import_email import_email
and info["email"] != etud["mail"] and info["email"] != etud["mail"]
or info["emailperso"] != etud.get("mailperso", "") or info["emailperso"] != apo_emailperso
): ):
scolars.adresse_edit( scolars.adresse_edit(
cnx, cnx,
@ -805,7 +807,7 @@ def formsemestre_import_etud_admission(
"etudid": etudid, "etudid": etudid,
"adresse_id": info["adresse_id"], "adresse_id": info["adresse_id"],
"email": etud["mail"], "email": etud["mail"],
"emailperso": etud.get("mailperso", ""), "emailperso": apo_emailperso,
}, },
context=context, context=context,
) )

View File

@ -268,14 +268,13 @@ def identite_list(cnx, *a, **kw):
def identite_edit_nocheck(cnx, args): 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) _identiteEditor.edit(cnx, args)
def check_nom_prenom(cnx, nom="", prenom="", etudid=None): def check_nom_prenom(cnx, nom="", prenom="", etudid=None):
"""Check if nom and prenom are valid. """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. in general, homonyms are allowed, but it may be useful to generate a warning.
Returns: Returns:
True | False, NbHomonyms True | False, NbHomonyms
@ -418,14 +417,17 @@ def notify_etud_change(context, email_addr, etud, before, after, subject):
txt = "\n".join(txt) txt = "\n".join(txt)
# build mail # build mail
log("notify_etud_change: sending notification to %s" % email_addr) log("notify_etud_change: sending notification to %s" % email_addr)
log("notify_etud_change: subject: %s" % subject)
log(txt)
msg = MIMEMultipart() msg = MIMEMultipart()
subj = Header("[ScoDoc] " + subject, SCO_ENCODING) subj = Header("[ScoDoc] " + subject, SCO_ENCODING)
msg["Subject"] = subj msg["Subject"] = subj
msg["From"] = context.get_preference("email_from_addr") msg["From"] = context.get_preference("email_from_addr")
msg["To"] = email_addr msg["To"] = email_addr
txt = MIMEText(txt, "plain", SCO_ENCODING) mime_txt = MIMEText(txt, "plain", SCO_ENCODING)
msg.attach(txt) msg.attach(mime_txt)
context.sendEmail(msg) context.sendEmail(msg)
return txt
# -------- # --------