From 5e24cd8100679531edbc929649ab0960bb82d781 Mon Sep 17 00:00:00 2001 From: viennet Date: Wed, 21 Oct 2020 00:15:40 +0200 Subject: [PATCH] Fix import/synchro donnees etudiants portal --- sco_portal_apogee.py | 11 +++++------ sco_synchro_etuds.py | 32 ++++++++++++++------------------ sco_utils.py | 11 +---------- 3 files changed, 20 insertions(+), 34 deletions(-) diff --git a/sco_portal_apogee.py b/sco_portal_apogee.py index e3ab0d07..9641659e 100644 --- a/sco_portal_apogee.py +++ b/sco_portal_apogee.py @@ -174,11 +174,7 @@ def get_inscrits_etape(context, code_etape, anneeapogee=None, ntrials=2): ) return False # ??? pas d'annee d'inscription dans la réponse - # Non disponible avec l'API v2. Apparemment non utilisée de toute - # façon, rien dans le code ne mettait anneeapogee à *, mais - # seulement à l'année par de début de semestre. Donc on laisse le test. - if anneeapogee != "*": - etuds = [e for e in etuds if check_inscription(e)] + etuds = [e for e in etuds if check_inscription(e)] return etuds @@ -472,7 +468,7 @@ def _normalize_apo_fields(infolist): recode les champs: paiementinscription (-> booleen), datefinalisationinscription (date) ajoute le champs 'paiementinscription_str' : 'ok', 'Non' ou '?' - ajuoute le champs 'etape' (= None) s'il n'est pas présent + ajoute les champs 'etape' (= None) et 'prenom' ('') s'ils ne sont pas présents. """ for infos in infolist: if infos.has_key("paiementinscription"): @@ -501,6 +497,9 @@ def _normalize_apo_fields(infolist): if not infos.has_key("etape"): infos["etape"] = None + if not infos.has_key("prenom"): + infos["prenom"] = "" + return infolist diff --git a/sco_synchro_etuds.py b/sco_synchro_etuds.py index 26874f36..484eb258 100644 --- a/sco_synchro_etuds.py +++ b/sco_synchro_etuds.py @@ -586,36 +586,32 @@ def do_import_etuds_from_portal(context, sem, a_importer, etudsapo_ident, REQUES ] # on a ici toutes les infos renvoyées par le portail # Traduit les infos portail en infos pour ScoDoc: - address = etud["address"].strip() + address = etud.get("address", "").strip() if address[-2:] == "\\n": # certains champs se terminent par \n address = address[:-2] - # Les mails et le code INE sont facultatifs (pas toujours renvoyés par le portail) - etud["mail"] = etud.get("mail", "") - etud["mailperso"] = etud.get("mailperso", "") - etud["ine"] = etud.get("ine", "") - # + args = { + "code_nip": etud["nip"], "nom": etud["nom"].strip(), "prenom": etud["prenom"].strip(), + # Les champs suivants sont facultatifs (pas toujours renvoyés par le portail) + "code_ine": etud.get("ine", "").strip(), "sexe": gender2sex(etud["gender"].strip()), - "date_naissance": etud["naissance"].strip(), - "lieu_naissance": etud["ville_naissance"].strip(), - "dept_naissance": etud["code_dep_naissance"].strip(), - "code_nip": etud["nip"], - "code_ine": etud["ine"], - "email": etud["mail"].strip(), - "emailperso": etud[ - "mailperso" - ].strip(), # pas toujours fourni par le portail + "email": etud.get("mail", "").strip(), + "emailperso": etud.get("mailperso", "").strip(), + "date_naissance": etud.get("naissance", "").strip(), + "lieu_naissance": etud.get("ville_naissance", "").strip(), + "dept_naissance": etud.get("code_dep_naissance", "").strip(), "domicile": address, "codepostaldomicile": etud.get("postalcode", "").strip(), - "villedomicile": etud["city"].strip(), - "paysdomicile": etud["country"].strip(), + "villedomicile": etud.get("city", "").strip(), + "paysdomicile": etud.get("country", "").strip(), "telephone": etud.get("phone", "").strip(), "typeadresse": "domicile", "boursier": etud.get("bourse", None), "description": "infos portail", } + # Identite args["etudid"] = scolars.identite_create(cnx, args) created_etudids.append(args["etudid"]) @@ -736,7 +732,7 @@ def do_import_etud_admission( for apo_field, sco_field in fields_apo_sco: x = etud.get(apo_field, "").strip() if x: - args[sco_field] = x.strip() + args[sco_field] = x # Champs spécifiques: sexe = gender2sex(etud["gender"].strip()) if sexe: diff --git a/sco_utils.py b/sco_utils.py index 7cb6c6b9..2cc6535c 100644 --- a/sco_utils.py +++ b/sco_utils.py @@ -348,8 +348,7 @@ def group_by_key(d, key): TYPE_ADMISSION_DEFAULT = "Inconnue" TYPES_ADMISSION = (TYPE_ADMISSION_DEFAULT, "APB", "APB-PC", "CEF", "Direct") -""" Simple python utilities -""" +# ---- Simple python utilities def simplesqlquote(s, maxlen=50): @@ -546,14 +545,6 @@ def sendCSVFile(REQUEST, data, filename): return data -# head = """Content-type: %s; name="%s" -# Content-disposition: filename="%s" -# Title: %s -# -# """ % (CSV_MIMETYPE,filename,filename,title) -# return head + str(data) - - def sendPDFFile(REQUEST, data, filename): filename = ( unescape_html(suppress_accents(filename)).replace("&", "").replace(" ", "_")