Skip to content
Snippets Groups Projects
Commit 1193364c authored by Emmanuel Viennet's avatar Emmanuel Viennet
Browse files

Fix: sco_report when no admission data (continued)

parent cc290487
No related branches found
No related tags found
No related merge requests found
......@@ -63,6 +63,7 @@ class Identite(models.ScoDocModel):
dept_naissance = db.Column(db.Text())
nationalite = db.Column(db.Text())
statut = db.Column(db.Text())
"champ libre inutilisé par ScoDoc, peut servir à filtrer dans les statistiques"
boursier = db.Column(
db.Boolean(), nullable=False, default=False, server_default="false"
)
......@@ -217,11 +218,15 @@ class Identite(models.ScoDocModel):
return cls.query.filter_by(**args).first_or_404()
@classmethod
def get_etud(cls, etudid: int, accept_none=False) -> "Identite":
def get_etud(
cls, etudid: int, accept_none=False, ensure_admission=False
) -> "Identite":
"""Etudiant ou 404 (ou None si accept_none),
cherche uniquement dans le département courant.
Si accept_none, return None si l'id est invalide ou ne correspond
pas à un étudiant.
Si ensure_admission: ajoute la relation "admission" si elle n'existe pas
déjà (cela entraîne un commit).
"""
if not isinstance(etudid, int):
try:
......@@ -236,9 +241,15 @@ class Identite(models.ScoDocModel):
if g.scodoc_dept
else cls.query.filter_by(id=etudid)
)
if accept_none:
return query.first()
return query.first_or_404()
etud: "Identite" = query.first() if accept_none else query.first_or_404()
if etud and not etud.admission and ensure_admission:
# Si admission n'existe pas, on l'ajoute
etud.admission = Admission()
db.session.add(etud.admission)
db.session.commit()
db.session.refresh(etud)
log(f"get_etud: added Admission to etudid={etudid}")
return etud
@classmethod
def create_etud(cls, **args) -> "Identite":
......
......@@ -90,7 +90,7 @@ def formsemestre_etuds_stats(
etudid = t[-1]
if etudids and etudid not in etudids:
continue
etud = Identite.get_etud(etudid)
etud = Identite.get_etud(etudid, ensure_admission=True)
e_dict = etud.to_dict_scodoc7()
if etud.admission:
e_dict |= etud.admission.to_dict()
......
......@@ -777,9 +777,6 @@ def do_import_etud_admission(etud: Identite, etud_data: dict, import_identite=Fa
"codepostallycee": get_opt_str(etud_data, "codepostal_lycee"),
"boursier": get_opt_str(etud_data, "bourse"),
}
if etud.admission is None:
etud.admission = Admission()
db.session.add(etud.admission)
args = {k: v for k, v in args.items() if v not in ("", None)}
etud.admission.from_dict(args)
......@@ -873,7 +870,7 @@ def formsemestre_import_etud_admission(
for i in ins:
etudid = i["etudid"]
etud: Identite = Identite.get_or_404(etudid)
etud: Identite = Identite.get_etud(etudid, ensure_admission=True)
code_nip = etud.code_nip
if not code_nip:
etuds_no_nip.append(etud)
......
......@@ -3,7 +3,7 @@
"Infos sur version ScoDoc"
SCOVERSION = "9.7.74"
SCOVERSION = "9.7.75"
SCONAME = "ScoDoc"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment