Fix import/synchro donnees etudiants portal

This commit is contained in:
viennet 2020-10-21 00:15:40 +02:00
parent 63a18176ea
commit 5e24cd8100
3 changed files with 20 additions and 34 deletions

View File

@ -174,10 +174,6 @@ def get_inscrits_etape(context, code_etape, anneeapogee=None, ntrials=2):
) )
return False # ??? pas d'annee d'inscription dans la réponse 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 return etuds
@ -472,7 +468,7 @@ def _normalize_apo_fields(infolist):
recode les champs: paiementinscription (-> booleen), datefinalisationinscription (date) recode les champs: paiementinscription (-> booleen), datefinalisationinscription (date)
ajoute le champs 'paiementinscription_str' : 'ok', 'Non' ou '?' 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: for infos in infolist:
if infos.has_key("paiementinscription"): if infos.has_key("paiementinscription"):
@ -501,6 +497,9 @@ def _normalize_apo_fields(infolist):
if not infos.has_key("etape"): if not infos.has_key("etape"):
infos["etape"] = None infos["etape"] = None
if not infos.has_key("prenom"):
infos["prenom"] = ""
return infolist return infolist

View File

@ -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 ] # on a ici toutes les infos renvoyées par le portail
# Traduit les infos portail en infos pour ScoDoc: # 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 if address[-2:] == "\\n": # certains champs se terminent par \n
address = address[:-2] 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 = { args = {
"code_nip": etud["nip"],
"nom": etud["nom"].strip(), "nom": etud["nom"].strip(),
"prenom": etud["prenom"].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()), "sexe": gender2sex(etud["gender"].strip()),
"date_naissance": etud["naissance"].strip(), "email": etud.get("mail", "").strip(),
"lieu_naissance": etud["ville_naissance"].strip(), "emailperso": etud.get("mailperso", "").strip(),
"dept_naissance": etud["code_dep_naissance"].strip(), "date_naissance": etud.get("naissance", "").strip(),
"code_nip": etud["nip"], "lieu_naissance": etud.get("ville_naissance", "").strip(),
"code_ine": etud["ine"], "dept_naissance": etud.get("code_dep_naissance", "").strip(),
"email": etud["mail"].strip(),
"emailperso": etud[
"mailperso"
].strip(), # pas toujours fourni par le portail
"domicile": address, "domicile": address,
"codepostaldomicile": etud.get("postalcode", "").strip(), "codepostaldomicile": etud.get("postalcode", "").strip(),
"villedomicile": etud["city"].strip(), "villedomicile": etud.get("city", "").strip(),
"paysdomicile": etud["country"].strip(), "paysdomicile": etud.get("country", "").strip(),
"telephone": etud.get("phone", "").strip(), "telephone": etud.get("phone", "").strip(),
"typeadresse": "domicile", "typeadresse": "domicile",
"boursier": etud.get("bourse", None), "boursier": etud.get("bourse", None),
"description": "infos portail", "description": "infos portail",
} }
# Identite # Identite
args["etudid"] = scolars.identite_create(cnx, args) args["etudid"] = scolars.identite_create(cnx, args)
created_etudids.append(args["etudid"]) created_etudids.append(args["etudid"])
@ -736,7 +732,7 @@ def do_import_etud_admission(
for apo_field, sco_field in fields_apo_sco: for apo_field, sco_field in fields_apo_sco:
x = etud.get(apo_field, "").strip() x = etud.get(apo_field, "").strip()
if x: if x:
args[sco_field] = x.strip() args[sco_field] = x
# Champs spécifiques: # Champs spécifiques:
sexe = gender2sex(etud["gender"].strip()) sexe = gender2sex(etud["gender"].strip())
if sexe: if sexe:

View File

@ -348,8 +348,7 @@ def group_by_key(d, key):
TYPE_ADMISSION_DEFAULT = "Inconnue" TYPE_ADMISSION_DEFAULT = "Inconnue"
TYPES_ADMISSION = (TYPE_ADMISSION_DEFAULT, "APB", "APB-PC", "CEF", "Direct") TYPES_ADMISSION = (TYPE_ADMISSION_DEFAULT, "APB", "APB-PC", "CEF", "Direct")
""" Simple python utilities # ---- Simple python utilities
"""
def simplesqlquote(s, maxlen=50): def simplesqlquote(s, maxlen=50):
@ -546,14 +545,6 @@ def sendCSVFile(REQUEST, data, filename):
return data 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): def sendPDFFile(REQUEST, data, filename):
filename = ( filename = (
unescape_html(suppress_accents(filename)).replace("&", "").replace(" ", "_") unescape_html(suppress_accents(filename)).replace("&", "").replace(" ", "_")